解决方案 »

  1.   

    li.getLineNumber()是得到总共有几行吧,那你就用 一个counter, counter++来打印吧
      

  2.   

    是跟in1.readLine 有关系
    while((s=in1.readLine())!=null) {
                    System.out.println("Line "+li.getLineNumber()+": "+s);
                }
    in1.readLine() 时,in1需要按照一行一行来输出自己的内容,但输出之前in1必须将li的内容全部读完,所以li的lineNumber就到了第5行了。
      

  3.   

    但我这是按照Thinking in java这本书上的例子来写的,不可能有这么明显的错误吧?
      

  4.   

     没看过thinking in java ,不过跟前有一本,楼主仿的哪个章节的例子呢,我看看去,我这里的是第四版的。
      

  5.   

     没看过thinking in java ,不过跟前有一本,楼主仿的哪个章节的例子呢,我看看去,我这里的是第四版的。
    Thinking in java  中文第四版    10.7.4 小节     NewIODemo.java这个例子   你看下?是不是我的理解有问题。
      

  6.   


    看了开头我还想问,用了那本书上的例子,太老了,完全可以扔掉了。还在用Vector而且,现在显然楼上几位告诉你的是正确答案。getLineNumber,代表的是这个对象,当前读到第几行。你在全部读完,放入Vector之后,再去调用getLineNumber,显然他只会告诉你最后一行的行号。
    一开始是0,每次调用read类方法的时候,碰到'\n',就会+1。
      

  7.   


    看了开头我还想问,用了那本书上的例子,太老了,完全可以扔掉了。还在用Vector而且,现在显然楼上几位告诉你的是正确答案。getLineNumber,代表的是这个对象,当前读到第几行。你在全部读完,放入Vector之后,再去调用getLineNumber,显然他只会告诉你最后一行的行号。
    一开始是0,每次调用read类方法的时候,碰到'\n',就会+1。
    好吧,我是觉得经典书籍不应该犯这样的错误啊!
      

  8.   

     我看的thinking in java 第十章只到10.7.2 是嵌套类的从多层嵌套类访问外部类的成员 木有10.7.4节。6楼大牛已经确认我们的理解是对的,这个就可以先过了,哈哈。
      

  9.   

    String text = "a\r\nb\r\nc\r\n"; LineNumberReader r = new LineNumberReader(new BufferedReader(new StringReader(text))); String tmp = null;
    while ((tmp = r.readLine()) != null)
    System.out.println("Line" + r.getLineNumber() + ": " + tmp);
    r.close();lz应该用LineNumberReader 来包装BufferedReader而不是反过来。BufferedReader  的缓冲区默认是8192 lz的文本内容应该还没这么多,用BufferedReader包装LineNumberReader 的话直接就给缓冲完了,所以行号一直是5。
      

  10.   

     没看过thinking in java ,不过跟前有一本,楼主仿的哪个章节的例子呢,我看看去,我这里的是第四版的。
    Thinking in java  中文第四版    10.7.4 小节     NewIODemo.java这个例子   你看下?是不是我的理解有问题。
    没看过第四版,TIJ是十几年前看的了,当时就觉得翻译+原著都有点问题