Java Scanner nextLine问题,需要额外输入

时间:2018-08-06 07:55:52

标签: java

我正在研究Java I / O。我的代码有问题。 我要打印

[0, 0, 1]
[1, 0, 1]
[0, 0, 1]
[2, 0, 1]
[10, 0, 5]

但是需要其他回车。

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int tc = sc.nextInt();
    sc.nextLine();
    System.out.println();

    for (int i = 0; i < tc; i++) {
        int line = sc.nextInt();
        sc.nextLine();

        for (int j = 0; j < line; j++) {
            System.out.println(i+""+j);
            int[] st = Arrays.stream(sc.nextLine().split(" "))
                    .mapToInt(Integer::parseInt).toArray();
            System.out.println(Arrays.toString(st));
        }
    }
}

下面是输入和输出。而且我不知道为什么[10,0,5]没有显示。如果我按Enter键,则会显示[10,0,5]。

Input
2
2
0 0 1
1 0 1
3
0 0 1
2 0 1
10 0 5

Output
[0, 0, 1]
[1, 0, 1]
[0, 0, 1]
[2, 0, 1]
(additional enter)
[10, 0, 5]

2 个答案:

答案 0 :(得分:0)

读取Java doc for nextLine方法。

  

由于此方法继续在输入中搜索以寻找   行分隔符,它可以缓冲搜索行的所有输入   如果没有行分隔符,则跳过。

此nextLine调用将阻塞,直到找到行分隔符(这是附加的回车符)为止。

int[] st = Arrays.stream(sc.nextLine().split(" "))
                    .mapToInt(Integer::parseInt).toArray();

答案 1 :(得分:0)

y