繁体   English   中英

Java:一次输入多行

[英]Java: Take multi-line input once

我在编程难题中的输入有点问题。 我想将输入转换为图形,输入以未知数量的线表示,每条线具有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

而不是在扫描仪有数据时循环播放,为什么不循环播放,直到用户发出信号,说他们已经完成了添加带有特殊字符序列(例如空行)的输入?

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())));

我没有意识到在测试代码时必须手动发送EOF标志(在Windows上是Ctrl + D,在Windows上是Ctrl + Z),所以这就是为什么我发布了这个问题。

当实际从文件或其他内容读取输入时,hasNext()到达末尾时将返回false,因此这只是一个测试问题。

因此,只需使用快捷方式在控制台上发送EOF登录,它将使hasNext()返回false。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM