黑马程序员技术交流社区

标题: 视频没看明白,关于mybufferedread [打印本页]

作者: 官仁杰    时间: 2012-10-10 16:28
标题: 视频没看明白,关于mybufferedread
本帖最后由 官仁杰 于 2012-10-11 22:06 编辑
  1. public String myReadLine()throws IOException
  2.         {
  3.                 //定义一个临时容器。原BufferReader封装的是字符数组。
  4.                 //为了演示方便。定义一个StringBuilder容器。因为最终还是要将数据变成字符串。
  5.                 StringBuilder sb = new StringBuilder();
  6.                 int ch = 0;
  7.                 while((ch=r.read())!=-1)
  8.                 {
  9.                         if(ch=='\r')         //为什么\r,\n都要判断,为什么\r这里是continue
  10.                                 continue;
  11.                         if(ch=='\n')
  12.                                 return sb.toString();
  13.                         else
  14.                                 sb.append((char)ch);
  15.                 }

  16.                 if(sb.length()!=0)
  17.                         return sb.toString();
  18.                 return null;               
  19.         }
复制代码

作者: 张忠豹    时间: 2012-10-10 16:37
在windows中\r\n表示换行
在linux中\n 就可以表示换行
但是,在继承工具里面直接用\n也是可以换行的,比如Eclipse中\n就可以表示换行……
作者: 李建强    时间: 2012-10-10 16:51
本帖最后由 李建强 于 2012-10-10 16:59 编辑

这个问题我也以前纠结了,
大约10几分钟,
  1. 07.                while((ch=r.read())!=-1)

  2. 08.                {

  3. 09.                        if(ch=='\r')         //这里是r的话,会跳出本次循环执行下次循环,也就是不见到\r就不往下执行了。
  4. 10.                                continue;

  5. 11.                        if(ch=='\n') //上面见到/r,才能到这里找\n,\r\n都存在了,代表一行结束了。

  6. 12.                                return sb.toString();

  7. 13.                        else

  8. 14.                                sb.append((char)ch);

  9. 15.                }

复制代码

作者: Jordon    时间: 2012-10-10 17:52
在windows系统中\n\r表示按了回车键
\n 就是换行,换到下一行了,但是不知道是不是行首,
\r 就是回到本行的行首,没有换到下一行,如果\r后面有字符的话,就会覆盖住\r前面的字符,后面有几个字符就会覆盖前面的几个字符。
作者: 葬天    时间: 2012-10-10 17:52
(代码自己有)
开发:想了想,这需要一周吧
老板:别这么急,给你两周能完成吗?
开发:花三小时把代码改了,剩下的时间。。。。你懂得




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