[英]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.