在标准输入的一行中我有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]);
我的问题是,是否有任何优雅的方式来阅读其余部分并将其存储到数组中?
答案 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]);
这也可以让你处理循环中的错误(如果你认为有必要,我会把那部分留给你)。