java代码的一个小问题...高手帮助下

来源:百度知道 编辑:UC知道 时间:2024/05/06 17:28:39
我是个JAVA初学者,下面的代码在执行后按回车退不出去..为什么?
对回答的要求是把原理讲清楚,谢谢了.
JDK1.6的,WINDOWS下

public class NiHao {
public static void main(String[] args) {
int ch=0;
while(ch!='\r'|| ch!='\n'){
try{
ch = System.in.read();
}
catch(Exception e){
}
}
}
}
public class NiHao {
public static void main(String[] args) {
int ch=0;
while(true){
try{
ch = System.in.read();
}
catch(Exception e){
}
if(ch!='\r'|| ch!='\n')
break;
}
}
}
这样的话,键入回车是可以跳出WHILE循环,搞不懂了...

测试了一下,按下键盘的回车键,其实读入了两个字符,回车和换行,第一个回车“\r”,在while循环中,跟前面的比较为假,后面为真,所以为真,继续循环,接着第二个为换行"\n",在循环比较时,前真,后假,所以为真,循环就继续进入,就来到System.in.read(); 方法,是阻塞方法,没输入不会退出!所以你永远的死循环了!

eee

我也是初学者,对于你这个程序 我也在我的机子上跑了

貌似 执行不了,我自己的理解

你要输入 输出 先要建立 输入输出流

然后再弄个缓冲器

String ch;

InputStreamReader ir=new InputStreamReader(System.in);
BufferedReader in=new BufferedReader(ir);
ch=in.readLine();
System.out.println("Read:"+ch);

int ch=0;
while(ch!='\r'|| ch!='\n')
条件永远是满足的。
死循环当然就退不出去了。

你这个while是死循环语句,如果想要退出循环,就要当ch='\r'并且ch='\n',但是当ch等于其中一个时,另一个又不满足,条件即为真了,如果你要想按了回车退出去,只要把条件改成ch!='\n',这样,当你输入了回车,ch!='\n',条件为假,退出循环
程序如下
public class NiHao {
public static void main(String[] args) {
int ch=0;
while(ch!='\n'){
try{
ch = System.in.read();
}
catch(Except