黑马程序员技术交流社区

标题: 一道面试题求解 [打印本页]

作者: 默狼    时间: 2013-11-18 20:52
标题: 一道面试题求解
自己模拟BufferedReader和LineNumberReader功能? 这个题目该如何做?从哪里作为切入点呢?
作者: zuiaichiyu    时间: 2013-11-18 21:22
模拟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. }
复制代码

作者: 默狼    时间: 2013-11-18 21:28
zuiaichiyu 发表于 2013-11-18 21:22
模拟BufferedReader和LineNumberReader功能
BufferedReader是一个装饰对象,增强了了Reader中的读取功能,
...

谢谢了!
作者: FFF    时间: 2013-11-19 00:18
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~




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