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); 控制台就会无限循环 这是为什么?????????
}
} 展开
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); 控制台就会无限循环 这是为什么?????????
}
} 展开
2个回答
展开全部
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();
}
}
展开全部
先看看代码
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)
进入循环
只要输入?, 就有可能退出
追问
在看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询