我在编程难题中的输入有点问题。我想将输入转换为图,输入表示为一个未知数量的线,每个线都有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())));
我没有意识到,在测试代码时,必须手动在Windows上手动发送EOF符号(ubuntu/ctrl z上的ctrl d),所以这就是为什么我发布问题。
实际上从文件或某些内容读取输入时,hasNext()到达结束后会返回false,因此这只是一个测试问题。
因此,只需使用快捷方式在控制台上发送EOF登录,它将使hasnext()返回false。