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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© macouen 中级黑马   /  2013-8-18 15:29  /  857 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 macouen 于 2013-8-18 15:34 编辑

设置行号没有执行。我实在找不到哪的问题了~你们谁运行下看看~

  1. import java.io.*;
  2. class MyLineNumberReader
  3. {
  4.         private Reader r;
  5.         private int lineNumber;
  6.         MyLineNumberReader(Reader r)
  7.         {
  8.                 this.r = r;
  9.         }

  10.         public String myReadLine()throws IOException
  11.         {
  12.                 lineNumber++;
  13.                 StringBuilder sb = new StringBuilder();
  14.                 int ch = 0;
  15.                 while((ch=r.read())!=-1)
  16.                 {
  17.                         if(ch=='\r')
  18.                                 continue;
  19.                         if(ch=='\n')
  20.                                 return sb.toString();
  21.                         else
  22.                                 sb.append((char)ch);
  23.                 }
  24.                 if(sb.length()!=0)
  25.                         return sb.toString();
  26.                 return null;
  27.         }
  28.         public void setLineNumber(int lineNumber)
  29.         {
  30.                 this.lineNumber = lineNumber;
  31.         }
  32.         public int getLineNumber()
  33.         {
  34.                 return lineNumber;
  35.         }

  36.         public void myClose()throws IOException
  37.         {
  38.                 r.close();
  39.         }
  40. }

  41. class  MyLineNumberReaderDemo
  42. {
  43.         public static void main(String[] args) throws IOException
  44.         {
  45.                 FileReader fr = new FileReader("copyTextByBuf.java");

  46.                 MyLineNumberReader mylnr = new MyLineNumberReader(fr);

  47.                 String line = null;
  48.                 mylnr.setLineNumber(100);
  49.                 while((line=mylnr.myReadLine())!=null)
  50.                 {
  51.                         System.out.println(mylnr.getLineNumber()+"::"+line);
  52.                 }

  53.                 mylnr.myClose();
  54.         }
  55. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张智文 + 1

查看全部评分

4 个回复

倒序浏览
第54行~我设置了从100开始。。但是没有执行~
回复 使用道具 举报
你使用到了IO中的一个设计模式:装饰设计模式。
装饰设计模式解决:对一组类进行功能的增强。
包装:写一个类(包装类)对被包装对象进行包装;
* 1、包装类和被包装对象要实现同样的接口;
* 2、包装类要持有一个被包装对象;
* 3、包装类在实现接口时,大部分方法是靠调用被包装对象来实现的,对于需要修改的方法我们自己实现;

很明显 MyLineNumberReader 也要继承Reader抽象类
class MyLineNumberReader extends Reader
{
        private Reader r;
        private int lineNumber;
应该是这样,我没有实现,你调试看看吧!

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