黑马程序员技术交流社区
标题:
关于if判断和break的问题,求教高手啊
[打印本页]
作者:
孙浩迪
时间:
2012-6-16 23:30
标题:
关于if判断和break的问题,求教高手啊
本帖最后由 sunhaodi 于 2012-6-19 14:39 编辑
package day5;
import java.io.IOException;
import java.io.InputStream;
public class ReadeInDemo {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
StringBuilder sb = new StringBuilder();
while(true){
int ch = in.read();
if(ch=='\r')
continue;
if(ch=='\n'){
String s = sb.toString();
if("over".equals(s)){
// break; 为什么把break; 注解这代码就运行不出来了啊。 我输入的是over以外的字母啊,也不进这个if判断啊,关这个break什么事?
}
System.out.println(s.toUpperCase());
sb.delete(0,sb.length());
}
else{
sb.append((char)ch);
}
}
}
}
作者:
李盼
时间:
2012-6-16 23:37
该代码在我的电脑上可以正常运行。注释不注释都可以把输入的小写字符转成大写的!
作者:
张頔
时间:
2012-6-16 23:42
因为while循环是个死循环会一直运行,而read是一个阻塞式的方法,它会一直等你输入东西,所以如果没有break来跳出while循环的话就会一直在等待你输入,就不会结束,只有你输入over然后进入if里边,就会break跳出while循环,这样才会结束。
作者:
陈嘉宾
时间:
2012-6-16 23:42
本帖最后由 陈嘉宾 于 2012-6-16 23:44 编辑
输入over就跳出这个死循环结束操作,注释掉break也是可以运行的,就是没有结束动作了,无限循环下去,在运行的时候只能用ctrl+c关闭
作者:
王晓新
时间:
2012-6-16 23:46
我运行了一下注释掉也可以运行成功的。注释掉的效果就是就算你输入over也会输出OVER不会跳出循环的。
作者:
孙峰
时间:
2012-6-16 23:49
这个题中,over是单独一行,作为结束判断的。 该over的上一行 在发出换行字符“\r\n”后才能新的一行打印 over。
你用了 if(ch=='\r') continue; if(ch=='\n'),这两个if来判断是不是要换行了,之后又看是不是接收到 over,是正确的。
但是,你用StringBuilder 装读取的的字符不合适,没法按行读取,你既然判断\r\n,就说明是对方按行发数据的。 还是建议这里用 BufferedReader
作者:
胡大强
时间:
2012-6-17 00:16
注释掉运行也对啊。。。。
QQ截图20120617002116.jpg
(40.24 KB, 下载次数: 38)
下载附件
2012-6-17 00:15 上传
注释掉 运行也是的啊。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2