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

我正在学习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] 没有显示。如果我按下回车键,则会出现 [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]


墨色风雨
浏览 148回答 2
2回答

慕无忌1623718

阅读Java文档为nextLine方法。由于此方法继续搜索输入以寻找行分隔符,因此如果不存在行分隔符,它可能会缓冲所有搜索要跳过的行的输入。这个 nextLine 调用会阻塞,直到它找到行分隔符,这是额外的输入。int[]&nbsp;st&nbsp;=&nbsp;Arrays.stream(sc.nextLine().split("&nbsp;")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.mapToInt(Integer::parseInt).toArray();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java