Java扫描程序阵列

use*_*473 5 java

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

Yog*_*ngh 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);
   }
Run Code Online (Sandbox Code Playgroud)

编辑:第二种方法:

   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()]);
Run Code Online (Sandbox Code Playgroud)

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()]);
Run Code Online (Sandbox Code Playgroud)