Java扫描程序阵列

时间:2012-11-01 13:43:14

标签: java

我遇到了java问题。我需要扫描数字(例如:1 3 4 2 5 6 7)并将它们放入数组中。问题是我不知道它会持续多久。是否有一个命令可用于确定扫描仪中放置的数字的长度?

4 个答案:

答案 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)