java - 有没有办法通过使用 nextLine() 读取空行来退出 while 循环? ( java )

标签 java while-loop java.util.scanner

对于一项作业,我需要使用扫描仪读取未指定数量的输入,并有相应的输出作为响应。为了继续接受输入,我使用了 while 循环:

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

最后的条目以“下一行”结束,因此扫描仪应该不会读取任何内容,但循环不会结束,直到我手动按下回车键。对原因有什么见解吗?

注意:输入的示例如下

name specific_string1 specific_string2
command1 name specific_string2
command2 name
command3 name

我从字符串中取出第一个单词,以便在循环内包含的 switch 语句中使用该命令,而名称和 Specific_strings 存储在变量中。 nextLine() 逐行读取这些内容,但不会自行退出。

最佳答案

The final entry ends with a "next line" so the scanner should be reading nothing, but the loop doesn't end until I press the enter key manually.

这是预期的行为。当您按下 ENTER 时,操作系统(和 Java)就知道您已经完成了一行中的字符输入。除非/直到您键入 ENTER,否则您可以键入其他字符......使该行非空。 ENTER 键表示“我,用户,已完成此行”。

<小时/>

郑重声明,scanner.nextLine() 可以返回 null,因此

    (readLine = scanner.nextLine()).equals("")

可能会抛出 NPE。 nextLine() 何时返回 null?当扫描仪到达流末尾时。如何从控制台发出流结束信号?通过键入 ^D(在 Linux/MacOS 上)或 ^Z(在 Windows 上)。

上面可能有您的难题的答案......

关于java - 有没有办法通过使用 nextLine() 读取空行来退出 while 循环? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52341955/

相关文章:

java使用相同的 key 加密解密密码md5

java - While 循环在音频播放器中不起作用

java - 如何将 java.util.Scanner 与整数一起使用

c - Putchar、getchar、while 循环中缺少字符

python - 我试图为健康栏创建一个 while 循环,但出现除法错误

java - 执行 .next() 方法时关闭扫描仪对象? java

java - 将元素输入数组

java - 如何使用 JBOSS 调用 Java Web 服务

java - 如何选择特定日期(当 : type = "date") in Selenium WebDriver?

java - 将替换字符串中的所有字符串替换为正则表达式?