Java:多次输入一次

时间:2017-11-22 17:54:57

标签: java input user-input

我在编程难题中输入有点问题。我想将输入转换为图形,输入呈现为未知数量的线条,每条线条具有由空格分隔的2个整数(这表示边缘)。我已经搜索过但没有真正找到答案,我知道如何从多行获取输入,但是在解析完所有输入后如何停止?

这就是我的意思:

Scanner stdin = new Scanner(System.in);
while (stdin.hasNext()) {
        node1 = stdin.nextInt();
        node2 = stdin.nextInt();
        //save edge from node1 to node2
}
//do xyz

这里的问题是永远不会到达xyz并且它一直在等待输入。 输入示例如下:

0 1
0 3
2 1

2 个答案:

答案 0 :(得分:0)

不是在有来自扫描仪的数据时循环,为什么不循环直到用户发出信号表示已完成添加带有特殊字符序列的输入,例如空行?

Scanner stdin = new Scanner(System.in);
String inputLine = null;
do {
    try {
        inputLine = stdin.nextLine();
        // process the inputLine here!
    } catch (Exception e) {
        break;
    }
} while (inputLine != null && !("".equals(inputLine.trim())));

答案 1 :(得分:0)

我没有意识到在测试代码时必须手动发送一个EOF标志(在Windows上的Ubuntu / Ctrl + Z上按Ctrl + D),这就是我发布问题的原因。

实际读取文件中的输入或者hasNext()一旦到达结尾就会返回false,所以这只是一个测试问题。

所以只需使用快捷方式在控制台上发送EOF标志,它将使hasNext()返回false。