繁体   English   中英

非终止Java程序

[英]Non-terminating Java program

我有这个与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

提前致谢。

要结束输入,您应该先输入ctrl + d ,否则,scanner.nextLine 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");

使用STOP\\n类的哨兵值或关闭流。 对于Windows(我猜),请按ctrl + z ;对于Linux,请按ctrl + d ,以关闭流。

不要检查空输入,而是检查一个空字符串。 这样,您只需按回车键就可以终止。

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

您可以决定一个特殊的字符串来结束循环,然后检查这个特殊的字符串。 例如:

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

尝试检查空行而不是null:

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

暂无
暂无

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

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