黑马程序员技术交流社区

标题: 关于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)

注释掉 运行也是的啊。。。

注释掉 运行也是的啊。。。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2