Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java while循环错误?附加输出代码有什么问题?_Java_Loops_While Loop - Fatal编程技术网

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

java while循环错误?附加输出代码有什么问题?,java,loops,while-loop,Java,Loops,While Loop,-首先,我给输入一个'r',预期的输出是“Hir”,然后是输入选项,但收到的输出是Hir,Hi,Hi,然后是输入选项。为什么它会显示另外两个Hi,Hi?我怀疑您在windows计算机上运行此操作,并在“r”之后按Enter键。如果不是这样,忽略这个答案 enter被理解为换行符,在windows上由两个字节组成0D 0A。在字符串文本中,它们通常表示为“\r\n” 这将导致读取三个字符:'r'、'\r'(字符13)和'\n'(字符10) 您的代码单独处理它们,因此输出是 class demoWh

-首先,我给输入一个'r',预期的输出是“Hir”,然后是输入选项,但收到的输出是Hir,Hi,Hi,然后是输入选项。为什么它会显示另外两个Hi,Hi?

我怀疑您在windows计算机上运行此操作,并在“r”之后按Enter键。如果不是这样,忽略这个答案

enter被理解为换行符,在windows上由两个字节组成
0D 0A
。在字符串文本中,它们通常表示为
“\r\n”

这将导致读取三个字符:'r'、'\r'(字符13)和'\n'(字符10)

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

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();
        }
    }
}
Hir 你好\r\n 嗨\n
但是\r和\n不会显示,因为它们只有在您将它们组合在一起时才起作用。

我怀疑您在windows计算机上运行此操作,并在“r”之后按Enter键。如果不是这样,忽略这个答案

enter被理解为换行符,在windows上由两个字节组成
0D 0A
。在字符串文本中,它们通常表示为
“\r\n”

这将导致读取三个字符:'r'、'\r'(字符13)和'\n'(字符10)

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

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();
        }
    }
}
Hir 你好\r\n 嗨\n
但是\r和\n不会显示,因为它们只有在您将它们组合在一起时才起作用。

您是在windows上运行此命令,然后在“r”之后按Enter键吗?您是在windows上运行此命令,然后在“r”之后按Enter键吗?有没有办法避免?据我所知,您只需要按Enter键来向shell发出信号(命令提示)您正在使用的输入是完整的。linebreak然后向shell发送信号,将所有输入转发到应用程序。当
ch==13 | | ch==10
时,您可以通过不打印/执行任何操作来“过滤”此输入。。这将起作用我从一本书中得到这一点..有什么方法可以避免吗?据我所知,您只需要输入来向shell(命令提示符)发出信号,表明您正在使用的输入已完成。linebreak然后向shell发送信号,将所有输入转发到应用程序。当
ch==13 | | ch==10
时,您可以通过不打印/执行任何操作来“过滤”此输入。。这会有用的我从一本书上得到的。。