A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙浩迪 中级黑马   /  2012-6-16 23:30  /  1901 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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);
                         }
                                 
                        
                        
                }
               
               
        }
        
        
}

6 个回复

倒序浏览
该代码在我的电脑上可以正常运行。注释不注释都可以把输入的小写字符转成大写的!
回复 使用道具 举报
因为while循环是个死循环会一直运行,而read是一个阻塞式的方法,它会一直等你输入东西,所以如果没有break来跳出while循环的话就会一直在等待你输入,就不会结束,只有你输入over然后进入if里边,就会break跳出while循环,这样才会结束。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 陈嘉宾 于 2012-6-16 23:44 编辑

输入over就跳出这个死循环结束操作,注释掉break也是可以运行的,就是没有结束动作了,无限循环下去,在运行的时候只能用ctrl+c关闭
回复 使用道具 举报
我运行了一下注释掉也可以运行成功的。注释掉的效果就是就算你输入over也会输出OVER不会跳出循环的。
回复 使用道具 举报
这个题中,over是单独一行,作为结束判断的。 该over的上一行 在发出换行字符“\r\n”后才能新的一行打印 over。
你用了  if(ch=='\r')   continue;       if(ch=='\n'),这两个if来判断是不是要换行了,之后又看是不是接收到 over,是正确的。
   但是,你用StringBuilder  装读取的的字符不合适,没法按行读取,你既然判断\r\n,就说明是对方按行发数据的。 还是建议这里用 BufferedReader
回复 使用道具 举报
注释掉运行也对啊。。。。

QQ截图20120617002116.jpg (40.24 KB, 下载次数: 35)

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

注释掉 运行也是的啊。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马