java System.in.read()使用问题

例:publicstaticvoidmain(String[]args)throwsIOException{charch;ch=(char)System.in.read(... 例:
public static void main(String[] args) throws IOException {

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

while(ch!='?'){
if(ch>='A'&&ch<='Z')
ch=(char)(ch+32);
else if(ch>='a'&&ch<='z')
ch=(char)(ch-32);
System.out.print(ch);
ch=(char)System.in.read(); //如果不在后面加这句 直接输出System.out.print(ch); 控制台就会无限循环 这是为什么?????????
}

}
展开
 我来答
ahcc08
2014-04-26 · 知道合伙人软件行家
ahcc08
知道合伙人软件行家
采纳数:11853 获赞数:51942
拥有丰富的软件开发经验。

向TA提问 私信TA
展开全部
public static void main(String[] args) throws IOException {

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

while(ch!='?'){
if(ch>='A'&&ch<='Z')
ch=(char)(ch+32);
else if(ch>='a'&&ch<='z')
   ch=(char)(ch-32);
System.out.print(ch);
// 如果删除下面的这句, ch一直不等于'?',
// 所以while一直为true,就出现了死循环,
// 你可以把while改成if,就不会死循环了。
// 或者你在下面再加一行break语句
break;
// ch=(char)System.in.read();
}

}
百度网友090def6
2014-04-26 · TA获得超过2211个赞
知道小有建树答主
回答量:558
采纳率:100%
帮助的人:715万
展开全部

先看看代码

public static void main(String[] args) throws IOException {

char ch;
// System.in 一个流监听键盘输入
ch = (char) System.in.read(); // 打开流,并读取第一字符到ch中

while (ch != '?') {
if (ch >= 'A' && ch <= 'Z')
ch = (char) (ch + 32);
else if (ch >= 'a' && ch <= 'z')
ch = (char) (ch - 32);
System.out.println(ch); // 换成了 println 换行输出,便于观察效果
// System.out 之后,本次循环结束,准备进入下次循环
// 不加 ch = (char) System.in.read()
// 表示System.in 还存在,没有读取ch的值不会变:如一开始ch=A,那就一直是A,while循环不会停止
}

}


如果你第一输入的是a,那么

    ch = 'a' ,经过while后ch = ‘A’,

    System.out.println(ch); 之后不做操作


那么循环结束,ch值不变,继续循环

    ch = 'A' ,经过while后ch = ‘a’,

    System.out.println(ch); 之后不做操作


此时就是以个无限循环,因此ch不可能被外力改变,只是在a 和A 之间变化


如果:

   System.out.println(ch); 

   ch = (char) System.in.read(); // 再次读取流中一个字节给ch

   这个时候ch值改变(也有可能你再次输入a)

   进入循环

只要输入?, 就有可能退出

追问
在看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式