java while循环错误?附加输出代码有什么问题?

时间:2017-08-14 14:27:02

标签: java loops while-loop

class demoWhile{        
public static void main(String args[])
    throws java.io.IOException{
        char ch = (char)System.in.read();
        while(ch!='w'){
            System.out.println("Hi"+ch);
            ch = (char)System.in.read();
        }
    }
}

- 首先我给了输入一个' r'和预期的产量是" Hir"然后输入选项但是接收输出是Hir,Hi,Hi然后是输入选项。为什么它会显示另外两个Hi,嗨?

1 个答案:

答案 0 :(得分:5)

我怀疑你是在Windows机器上运行它并在' r'之后按Enter键。如果情况并非如此,请忽略此答案。

输入被理解为换行符,它由Windows上的两个字节0D 0A组成。在字符串文字中,这些通常表示为"\r\n"

这会导致三个字符被读取:' r',' \ r' (char 13)和' \ n' (char 10)。

您的代码会单独处理它们,因此输出为

Hir
Hi\r
Hi\n

但是\ r和\ n不会显示,因为它们只有在组合它们时才会产生效果(在Windows上)。