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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 默狼 中级黑马   /  2013-11-18 20:52  /  1363 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

自己模拟BufferedReader和LineNumberReader功能? 这个题目该如何做?从哪里作为切入点呢?

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定

查看全部评分

3 个回复

正序浏览
FFF 金牌黑马 2013-11-19 00:18:42
板凳
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~
回复 使用道具 举报
zuiaichiyu 发表于 2013-11-18 21:22
模拟BufferedReader和LineNumberReader功能
BufferedReader是一个装饰对象,增强了了Reader中的读取功能,
...

谢谢了!
回复 使用道具 举报
模拟BufferedReader和LineNumberReader功能
BufferedReader是一个装饰对象,增强了了Reader中的读取功能,
模拟BufferedReader就是自己写一个方法来读取对象,就是对Reader中read()方法的增强
LineNuberReader只要在自定义BufferedReader功能的时候,没读取一行加上行号
定义一个计数器,每读完一行,计数器加一,把值放到每行的首位
代码如下:
  1. class MyBufferedReader
  2. {
  3.         private static Reader r ;
  4.         int lineNumber = 0;
  5.         public MyBufferedReader(Reader r){
  6.                 this.r = r;
  7.                 lineNumber = 0;
  8.         }
  9.         public  String myRead() throws Exception{

  10.                 StringBuilder sb = new StringBuilder();
  11.                 //用Reaer自身的方法读取字符
  12.                 int len = 0;
  13.                
  14.                 while((len = r.read())!=-1){
  15.                         
  16.                         //判断读取到的位置
  17.                         if(len =='\t')
  18.                                 continue;
  19.                         if(len =='\n'){
  20.                                 //读完一行,将缓冲区对象转成字符串
  21.                                 lineNumber++;
  22.                                 return addLineNumber(sb.toString());
  23.                                 
  24.                         }
  25.                         //如果不到一行,将字符添加到sb
  26.                         sb.append((char)len);        
  27.                 }
  28.                 if(sb.length()!=0)
  29.                 return (lineNumber+":"+sb.toString());
  30.                 else
  31.                         return null;
  32.         }
  33.         public String addLineNumber(String s){
  34.                 return lineNumber+":"+s;
  35.         }
  36.         public void close() throws Exception{
  37.                 r.close();
  38.         }
  39. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 有例子但解释太少,下次多点自己的解释注释.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马