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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张振纲 中级黑马   /  2012-8-10 17:59  /  1001 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2. 需求:模拟一个LineNumberReader

  3. 思路:创建一个类,并且创建相应的方法
  4.          通过创建一个StringBuilder来作为缓冲区
  5.          添加一个计数器来输出linenumber
  6. */

  7. import java.io.*;

  8. class MyLine
  9. {
  10.         private Reader r;
  11.         private int lineNumber;
  12.         MyLine(Reader r)
  13.         {
  14.                 this.r = r;
  15.         }
  16.        
  17.         public void close()
  18.         {
  19.                 try
  20.                 {
  21.                         r.close();
  22.                 }
  23.                 catch (IOException e )
  24.                 {
  25.                         throw new RuntimeException("关闭异常");
  26.                 }
  27.         }

  28.         public int getLineNumber()
  29.         {
  30.                 return lineNumber;
  31.         }

  32.         public void setLineNumber(int t)
  33.         {
  34.                 lineNumber=t;
  35.         }

  36.         public String readLine()
  37.         {
  38.                 lineNumber++;
  39.                
  40.                 int ch; //用于判断是否有字符
  41.                
  42.                 StringBuilder sb= null;
  43.                 try
  44.                 {
  45.                         sb=new StringBuilder();
  46.                         while ((ch=r.read())!=-1) //判断是否读到数据
  47.                         {
  48.                                 if (ch=='\r')
  49.                                         continue;
  50.                                 if (ch=='\n')
  51.                                         return sb.toString();
  52.                                 else
  53.                                         sb.append((char)ch);
  54.                         }

  55.                         if ((sb.length())!=0)
  56.                         {
  57.                                 return sb.toString();
  58.                         }

  59.                         return null;
  60.                        
  61.                 }
  62.                 catch (        IOException e )
  63.                 {
  64.                         throw new RuntimeException("关闭流异常");
  65.                 }
  66.         }
  67. }

  68. class MyLineNumberReader
  69. {
  70.         public static void main(String[] args)
  71.         {
  72.                 FileReader fr = null;
  73.                 try
  74.                 {
  75.                         fr = new FileReader("CalendarTest.java");
  76.                 }
  77.                 catch (        IOException e )
  78.                 {
  79.                         throw new RuntimeException("读取错误");
  80.                 }
  81.                 finally
  82.                 {
  83.                         try
  84.                         {
  85.                                 fr.close();
  86.                         }
  87.                         catch (IOException e )
  88.                         {
  89.                                 throw new RuntimeException("关闭异常");
  90.                         }
  91.                        
  92.                 }
  93.                

  94.                 MyLine my = new MyLine(fr);
  95.                
  96.                 my.readLine();
  97.                
  98.                 String str = null;

  99.                 while ((str=my.readLine())!=null)
  100.                 {
  101.                         System.out.print(my.getLineNumber()+str);
  102.                 }

  103.                 my.close();
  104.         }
  105. }
复制代码
首先我绝对不是重复发帖,刚才那个帖子的部分问题我自己解决了
所以重发

程序代码编译没有问题,可是不明白为什么运行会报错

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马