求助:无需预先指定数量的未知大小数组多用户输入实现
嘿,这个需求太贴近实际使用场景了!谁愿意先费劲数自己要输入多少内容啊?直接让用户输入到不想输为止才是最友好的方式对吧?下面我给你几个主流编程语言的具体实现方案,核心思路都是用动态扩容的容器来替代固定大小的数组,完全不用提前指定长度:
Python 实现
Python的list本身就是动态数组,天生支持自动扩容,简直完美适配你的需求。我们可以让用户持续输入内容,直到输入特定的终止信号(比如空行、输入exit或者按Ctrl+D):
user_inputs = [] print("请输入内容,输入空行结束:") while True: content = input().strip() if not content: # 空行触发终止 break user_inputs.append(content) print("你输入的内容已存入数组:") print(user_inputs)
这段代码会不断接收用户输入,每输入一条就添加到列表里,直到用户敲回车输入空内容,列表的大小会自动跟着输入数量变化。
JavaScript(Node.js 环境)
在Node.js里,我们可以通过监听标准输入来实现同样的效果,用普通数组来存储,数组会自动扩容:
const readline = require('readline'); const userInputs = []; const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); console.log("请输入内容,输入'exit'结束:"); rl.on('line', (input) => { if (input.trim().toLowerCase() === 'exit') { rl.close(); return; } userInputs.push(input.trim()); }); rl.on('close', () => { console.log("你输入的内容已存入数组:"); console.log(userInputs); });
用户每输入一行就会被添加到数组里,输入exit就停止,数组的长度完全由输入数量决定。
Java 实现
Java的普通数组是固定长度的,但我们可以用ArrayList(本质是动态扩容的数组实现)来解决问题,它会在容量不足时自动扩容:
import java.util.ArrayList; import java.util.Scanner; public class DynamicInputArray { public static void main(String[] args) { ArrayList<String> userInputs = new ArrayList<>(); Scanner scanner = new Scanner(System.in); System.out.println("请输入内容,输入空行结束:"); while (true) { String content = scanner.nextLine().trim(); if (content.isEmpty()) { break; } userInputs.add(content); } scanner.close(); System.out.println("你输入的内容已存入数组:"); System.out.println(userInputs); // 如果需要转成普通数组,可以用下面的代码 // String[] inputArray = userInputs.toArray(new String[0]); } }
ArrayList会自动管理容量,你只需要不断往里面加元素就行,最后如果需要普通数组,还可以用toArray方法转换。
总结一下,核心就是用语言自带的动态容器类型(Python的list、Java的ArrayList、JS的Array),它们都支持自动扩容,完全不用提前指定大小,完美匹配你的需求!
内容的提问来源于stack exchange,提问作者user9101146
相关产品推荐
相关产品推荐

