Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Java中的标准输入读取整数数组?_Java_Arrays_Bufferedreader - Fatal编程技术网

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

如何从Java中的标准输入读取整数数组?,java,arrays,bufferedreader,Java,Arrays,Bufferedreader,在标准输入的一行中,我有3种类型的整数:第一个整数是id,第二个整数是N-某个数字,然后是N个整数,由单个空间分隔,我想存储在array或ArrayList中。如何使用BufferedReader执行此操作?我有以下代码: BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] line = br.readLine().split(" "); int ID = Integer.parse

在标准输入的一行中,我有3种类型的整数:第一个整数是id,第二个整数是N-某个数字,然后是N个整数,由单个空间分隔,我想存储在array或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]);

我的问题是,有没有什么优雅的方法来读取行的其余部分并将其存储到数组中?

使用
扫描仪
和方法
hasnetint()

如何使用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]);
int[]数组=新的int[N];//输入的其余部分
assert line.length+2==N;//或者其他类似的支票
对于(int i=0;i

这还可以让您处理循环中的错误(如果您觉得有必要,我将把这部分留给您)。

下面的N个整数是如何分隔的?下面的N个整数仅由一个空格分隔。“使用限制模式分割”(正好一个空格)需要非常精确的准备输入。如果您仍然使用这种方法,建议按空格顺序拆分(
“\\s+”
)。建议检查
字符串[]行
中是否有足够的元素。@laune当然,我已将其合并到答案中。这是我发布的通用方法。OP没有特别提到他的问题。如果文件包含所有整数@launopo明确要求如何读取“N-某个数字,然后再读取N个整数”,以及如何将它们存储到数组或列表中,那么读取到文件末尾的问题是什么。他的“标准输入的一行”不是他唯一的一行。
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]);