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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ↙五线谱╲ 中级黑马   /  2013-12-6 20:13  /  2305 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package day19;
import java.io.*;
class LineNumberReaderDemo
{
        public static void main(String[] args) throws IOException
        {
                FileReader fr = new FileReader("Cast.java");
                LineNumberReader lnr = new LineNumberReader(fr);
                String line = null;
                lnr.setLineNumber(100);
                while((line=lnr.readLine())!=null)
                {
                        System.out.println(lnr.getLineNumber()+":"+line);
                }
                lnr.close();
        }
}
示例中都是从第一行开始设置,后面依次跟着改变。我的问题是:既然setLineNumber()是设置当前行的行号,怎样用setLineNumber()方法从任意行开始设置,比如第二行或第三行

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

2 个回复

倒序浏览
  lnr.setLineNumber(100);
这段代码不是已经设置,从第100,开始计数了吗?
回复 使用道具 举报
但是你调用的是LineNumberReader的readLine()方法来获取行号,所以,我们看看他的readLine()方法怎么写的:
  1. public String readLine() throws IOException {
  2.         synchronized (lock) {
  3.             String l = super.readLine(skipLF);
  4.             skipLF = false;
  5.             if (l != null)
  6.                 lineNumber++;
  7.             return l;
  8.         }
  9.     }
复制代码

你看,在返回行号之前要加一,对吧?也就是说你设置的是100开始,但是你读取一行过后返回的值是100+1,所以是从101开始打印的,懂了?

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

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