我遇到了java问题。我需要扫描数字(例如:1 3 4 2 5 6 7
)并将它们放入数组中。问题是我不知道它会持续多久。是否有一个命令可用于确定扫描仪中放置的数字的长度?
答案 0 :(得分:3)
如果您不想使用ArrayList作为解决方法,我建议您阅读整行,然后拆分以获取长度和单个值:
String line = scanner.nextLine();
String[] values = line.split(" ");
int[] intValues = new int[values.length];
int indx = 0;
for(String value:values){
intValues[indx++] = Integer.parseInt(value);
}
编辑:第二种方法:
List<Integer> numList = new ArrayList<Integer>();
int number = 0;
while (number != -1) {
System.out.println("Enter a positive integer value (or -1 to stop): ");
number = Integer.parseInt(in.nextLine());
if (number != -1){
numList.add(number);
}
}
in.close();
Integer[] numArray = numList.toArray(new Integer[numList.size()]);
EDIT2:在同一行中处理多个号码并在空行终止
List<Integer> numList = new ArrayList<Integer>();
while(true) {
System.out.println("Enter a positive integer value (or -1 to stop): ");
String line = in.nextLine();
if(line.length() <1){
break;
}
String [] numbers = line.split(" ");
for(String num: numbers){
numList.add(Integer.parseInt(num));
}
}
in.close();
Integer[] numArray = numList.toArray(new Integer[numList.size()]);
答案 1 :(得分:1)
如果您想要可变大小的集合,请使用ArrayList。
ArrayList<Integer> lst = new ArrayList<Integer>();
lst.add(scanner.getInt());
答案 2 :(得分:1)
您可以使用ArrayList
。只需填写它,最后将其转换为整数数组。或者甚至更好,保持清单并使用它。
Scanner in = new Scanner(System.in);
ArrayList<Integer> intList = new ArrayList<Integer>();
while (true) {
System.out.println("Enter a positive integer value (or -1 to stop): ");
int number = in.nextInt();
if (number < 0) break;
intList.add(number);
}
// just use this last line if you really want an array. Work with the list instead if possible.
Integer[] yourFinalArray = intList.toArray(new Integer[0]);
答案 3 :(得分:0)
如果你使用谷歌番石榴库(https://code.google.com/p/guava-libraries/),你可以说:
String numbers="1 3 4 2 5 6 7";
Splitter.on(" ").split( numbers );
这给你一个可迭代的。如果你坚持要获得一系列字符串,你可以说:
Iterables.toArray(Splitter.on(" ").split( numbers ), String.class)