非终止Java程序

时间:2011-11-09 09:21:52

标签: java java.util.scanner

我有这个与Java输入相关的问题。 我正在解决UVAToolkit中的一些情况,但是线输入需要来自 System.in 的一些问题。根据以下这些代码,一旦按下按键,我怎么能解决问题呢?样本输入/输出显示在下面。

Scanner scanner = new Scanner(System.in);
String line;
while((line = scanner.nextLine()) != null) {
    System.out.println(line);
}
System.out.println("done");

示例输入:

1 10
10 100
100 1000

示例输出:

1 10
10 100
100 1000
done

提前致谢。

5 个答案:

答案 0 :(得分:1)

要结束输入,您应该首先 ctrl + d ,否则scanner.nextLine()将不会返回null,而是挂起。

如果您想在输入单词quit后退出应用程序,则可以执行以下操作:

Scanner scanner = new Scanner(System.in);
String line;
while((line = scanner.nextLine()) != null && !line.equalsIgnoreCase("quit")) {
    System.out.println(line);
}
System.out.println("done");

答案 1 :(得分:1)

使用像STOP\n这样的标记值或关闭流。按 ctrl + z 为Windows(我猜)和 ctrl + d 为Linux关闭流。< / p>

答案 2 :(得分:1)

不要检查空输入,而是检查空字符串。这样,您只需按返回键即可终止。

while(!(line = scanner.nextLine()).equals(""))

答案 3 :(得分:0)

您可以决定使循环结束的特殊字符串,并检查此特殊字符串。例如:

while((line = scanner.nextLine()) != null) {
    if (line.equals("quit") break;
    System.out.println(line);
}
System.out.println("done");

答案 4 :(得分:0)

尝试检查空行而不是null:

while((line = scanner.nextLine()).isEmpty()) {
    System.out.println(line);
}