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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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  IODemo
  42. {
  43.         public static void main(String[] args) throws IOException
  44.         {
  45.                 FileReader fr = new FileReader("c:\\buf_copy.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. }
复制代码


请问在public String myReadLine()throws IOException
        {lineNumber++;

4 个回复

倒序浏览
不好意思,按错键了,我的问题是:public String myReadLine()throws IOException         {                  lineNumber++;...}这部分函数中,为什么每读完一行,lineNumber能自增一次,那个读取的动作不是一直在while()循环里面吗?怎么会再回去进行lineNumber的自增呢?
回复 使用道具 举报
因为你虽然是多次读取,但是因为只有一个对象,所以成员变量的自增每一次都有用
回复 使用道具 举报
GiveUp 发表于 2015-7-8 21:29
因为你虽然是多次读取,但是因为只有一个对象,所以成员变量的自增每一次都有用 ...

不太理解,你说的只有一个什么对象呢?可以具体说一下吗?
回复 使用道具 举报
那个变量是你创建的对象的成员变量,你对象只创建了一次。。new MyLineNumberReader(fr)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马