如何从Java中的标准输入读取整数数组?

在标准输入的一行中我有3种类型的整数:第一个整数是id,第二个整数是N – 某个数字,然后是N个整数,由我想要存储在数组或ArrayList中的单个空格分隔。 我怎么能用BufferedReader做到这一点? 我有以下代码:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] line = br.readLine().split(" "); int ID = Integer.parseInt(line[0]); int N = Integer.parseInt(line[1]); 

我的问题是,是否有任何优雅的方式来阅读其余的行并将其存储到数组中?

使用Scanner和方法hasNextInt()

 Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { if (scanner.hasNextInt()) { arr[i]=scanner.nextInt(); i++; } } 

我怎么能用BufferedReader做到这一点?

您已经读取/拆分了该行,因此您可以循环其余的输入整数并将它们添加到数组中:

 int[] array = new int[N]; // rest of the input assert line.length + 2 == N; // or some other equivalent check for (int i = 0; i < N; i++) array[i] = Integer.parseInt(line[i + 2]); 

这也可以让你在循环中处理错误(如果你认为有必要,我会把那部分留给你)。