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

时间:2014-07-01 18:46:57

标签: java arrays bufferedreader

在标准输入的一行中我有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]);

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

2 个答案:

答案 0 :(得分:4)

使用Scanner和方法hasNextInt()

Scanner scanner = new Scanner(System.in);

while (scanner.hasNext()) {

     if (scanner.hasNextInt()) {
        arr[i]=scanner.nextInt();
        i++;
     }
  }

答案 1 :(得分:3)

  

如何使用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]);

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