黑马程序员技术交流社区

标题: IO执行不了结束语句 [打印本页]

作者: 侯丛政    时间: 2013-2-15 12:15
标题: IO执行不了结束语句
本帖最后由 侯丛政 于 2013-2-15 19:13 编辑


      public static void main(String[] args) throws IOException {
                InputStream is = System.in;
                StringBuilder sb = new StringBuilder();
                while (true) {
                        int by = is.read();
                        if (by == '\r') {
                                continue;
                        }
                        if (by == '\n') {
                                if ("over".equals((char) by)) {      //  我是这样定义的结束条件    但是当输入"over" 时程序不会结束  ?
                                        break;
                                }
                                System.out.println(sb.toString());
                                sb.delete(0, sb.length());
                        } else {
                                sb.append((char) by);
                        }
                }
        }


作者: 夏振博    时间: 2013-2-15 12:48
换个比较条件    if ("over".equals(sb.toString()))   你那个判断条件是存之前的单个字符跟"over"比较
作者: 冯佩    时间: 2013-2-15 13:05
public class Test
{
        public static void main(String[] args)throws IOException
        {
               
        InputStream is = System.in;
        StringBuilder sb = new StringBuilder();
        while (true)
        {
               int by = is.read();
                if('o'==by)
                        break;
                if (by == '\r')
                        continue;
               
                if (by == '\n')
                {
                    System.out.println(sb.toString());
                     sb.delete(0, sb.length());
                }
                else
                {
                        sb.append((char) by);
                }
        }
    }
}
程序不会结束的原因:第一,结束语句应该放在外边进行判定,第二,字节输入流,不能用字符串定义结束标记,因为判断的是字节,所以只能用单个字符来定义,单个字符进行比较用==,而不能用equals.




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