【发布时间】:2012-05-24 23:27:00
【问题描述】:
我有一个字符串作为输入,它是一组数字,它们之间有空格,例如:
"30 129 48 29 110 90"
我想要做的是获取该字符串并将其作为整数输入到数组中,而无需首先使用第二个数组将数字存储为字符串。这就是我知道该怎么做:
String line = input.nextLine();
String[] arr = line.split(" ");
int[] array = new int[arr.length];
for (int i = 0; i < arr.length; i++){
array[i] = Integer.parseInt(arr[i]);
}
我不想制作 2 个数组来完成这项工作,但以某种方式在 for 循环中一次完成,我只是想要这样,因为它对我的眼睛更好,而且我喜欢编写干净的代码稍后我可以轻松更正。
编辑:在 jogabonito 的回答之后,这就是我设法做的事情
Scanner input = new Scanner(System.in);
System.out.printf("Input: ");
StringTokenizer line = new StringTokenizer(input.nextLine());
int[] numbers = new int[line.countTokens()];
for (int i = 0; line.hasMoreTokens(); i++){
numbers[i] = Integer.parseInt((String)line.nextElement());
}
【问题讨论】:
-
我不确定我是否遵循您的推理。避免使用辅助数组很可能会导致代码的可读性低于。
-
只是使用两个数组来做一件简单的事情对我来说不太合适,我想要一些可以立即转换 for 循环中的每个数字而不必依赖第二个数组
-
请注意,您将使用额外的数组或分析字符串两次:第一次只是为了计算数字,第二次是填充您的数组。
-
你可以使用
indexOf()和substring()等等,但是这样的代码看起来会很乱。它会在一个循环中用一个数组完成。 -
@Gaim 在开始填充
int数组之前,OP 将如何获取数字计数?这是impossiburu。
标签: java arrays split java.util.scanner