我在使用 java 时遇到问题。我需要扫描数字(例如1 3 4 2 5 6 7
:)并将它们放入数组中。问题是我不知道它会持续多久。有没有可以用来确定扫描仪中输入数字长度的命令?
问问题
4394 次
4 回答
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()]);
于 2012-11-01T13:49:09.583 回答
1
如果您想要一个可变大小的集合,请使用ArrayList 。
ArrayList<Integer> lst = new ArrayList<Integer>();
lst.add(scanner.getInt());
于 2012-11-01T13:45:05.647 回答
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]);
于 2012-11-01T13:49:59.467 回答
0
如果您使用 google Guava 库 ( 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)
于 2012-11-01T14:10:18.157 回答