gpt4 book ai didi

java - Do-While 循环 Java 输出错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:35 25 4
gpt4 key购买 nike

我正在阅读 Herbert Schildt 撰写的“Java 初学者指南,第六版”。

在 Windows Powershell 中使用 Windows 7 Home Premium 64 位和 Java 1.8.0_73。

当我编译此练习时(没有任何编译器警告或错误):

class DoWhileDemo {
public static void main( String[] args )
throws java.io.IOException {
char ch;

do {
System.out.print( "Press a key followed by ENTER: " );
ch = (char) System.in.read();
} while( ch != 'q' );
}
}

当我用“java DoWhileDemo”运行它时,我得到

Press a key followed by ENTER: f
Press a key followed by ENTER: Press a key followed by ENTER: Press a key followed by ENTER: q

程序按预期退出(当我按“q”并按 ENTER 时),但多次打印“按一个键,然后按 ENTER:”却没有。

有什么想法为什么会发生这种情况吗?

最佳答案

声明

ch = (char) System.in.read();

读取单个字符。当用户按 qenter 时,三个字符将发送到您的代码:

q
\r
\n

在 Windows 系统上。因此,在输入队列中没有任何内容并且代码停止读取之前,您会再通过循环两次。

在 Linux 上,您只会看到一个额外的提示,因为在这种情况下,只会发送两个字符 (q\n)。

如果您想要处理整行(正如您所看到的那样),则必须将 System.in 包装在 BufferedReader 中,以便可以调用 readLine()

关于java - Do-While 循环 Java 输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35672916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com