如何实现无需指定长度的整数数组用户输入(类命令行参数)
实现无需指定大小且无终止符的整数数组输入
我懂你的需求——不想让用户先输入元素数量,也不想让他们输句号这类终止符,还希望最终得到的整数数组能像命令行的String args[]那样顺手操作(比如拿长度、遍历、索引访问啥的)。其实最省心的方案就是让用户一次性把所有整数用空格分隔着输入,我们把输入内容拆分转换后,就能得到完全符合预期的整数数组。
核心思路
- 引导用户在一行内输入所有整数,用空格(随便多少个都行)分隔
- 读取整行输入,按空格拆分出字符串数组
- 把字符串数组转成整数数组
- 最终的整数数组就跟
args一样,支持所有常规数组操作
代码示例(Java)
import java.util.Scanner; import java.util.Arrays; public class DynamicIntArrayInput { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入整数(用空格分隔即可):"); String inputLine = scanner.nextLine(); // 先掐掉首尾空格,再按任意数量的空格拆分,避免空字符串元素 String[] strElements = inputLine.trim().split("\\s+"); int[] intArray = new int[strElements.length]; try { // 把字符串转成整数 for (int i = 0; i < strElements.length; i++) { intArray[i] = Integer.parseInt(strElements[i]); } // 现在就可以像操作args那样用这个数组了 System.out.println("数组长度:" + intArray.length); System.out.println("所有元素:" + Arrays.toString(intArray)); // 举个遍历的例子 System.out.println("\n挨个输出元素:"); for (int num : intArray) { System.out.print(num + " "); } } catch (NumberFormatException e) { System.out.println("\n输入里混了非整数内容,请重新输入!"); } scanner.close(); } }
细节说明
trim()+split("\\s+"):既处理了用户不小心输入的首尾空格,也兼容了多个连续空格的情况,不会产生空的数组元素- 异常捕获:防止用户输入字母、符号这类非整数内容导致程序崩掉
- 转换后的
intArray完全具备常规数组的特性:能通过length拿长度,能用索引访问元素,支持增强for循环遍历,和args的使用体验一模一样
这种方式完全不用用户额外输入数量或终止符,一次输入搞定所有,完美匹配你的需求。
内容的提问来源于stack exchange,提问作者kaitou-1412
相关产品推荐
相关产品推荐

