有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

powershell DoWhile循环Java输出错误

我正在阅读赫伯特·席尔德的《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键时),但“按a键后按ENTER键:”的多次打印没有成功

知道为什么会这样吗


共 (1) 个答案

  1. # 1 楼答案

    声明

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

    读入一个字符。当用户按qenter时,会向代码发送三个字符:

    q
    \r
    \n
    

    在Windows系统上。因此,在输入队列中没有任何内容,代码停止读取之前,您可以在循环中再获得两个paass

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

    如果您想处理整行代码(看起来是这样),那么必须将System.in包装在BufferedReader中,这样您就可以调用readLine()