2 fanjijk fanjijk 于 2016.05.07 14:55 提问

JAVA入门,输入小程序出现诡异的结果,求解!

public class read{
public static void main(String []args){
char c='a';
do{
System.out.println("请输入一个字符:");
try{
c=(char)System.in.read();
}catch(Exception e){ e.getMessage(); }
System.out.println(c);
}while(c!='q');
System.out.println("已退出");
}
}
运行结果:图片说明
为什么"请输入一个字符:" 会出现3次?而且第二次后面换行2次? 这到底是什么鬼?

4个回答

liuhuancai0703
liuhuancai0703   2016.05.07 16:00
已采纳

当你输入字符‘b' 并按回车时,System.in.read() 实际上读入了 b/r/n , /r 是回车符,/n是换行符。
你可以把输出还原为int 类型打印,根据打印的十进制数值查一下ASCII 码对照表。
System.out.print((int)c);

CSDNXIAOD
CSDNXIAOD   2016.05.07 15:02

【基于java的九宫格求解程序】
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

svmachine
svmachine   2016.05.07 15:29

判断信息包括a\r\n,不是只有a,你调试一下就知道了,另外你可以看下read()的原理

fanjijk
fanjijk   2016.05.07 16:14

该方法是从一个流中一个一个的读取数据,因此是一个迭代的过程。输入‘a’回车,其实是输入了3个字符:‘a’\r \n ,按下回车键代表两个字符。
所以一共比较3次。 感谢svmachine 的回答。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!