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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谜燕 中级黑马   /  2014-3-16 23:01  /  1149 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

默认从0开始可为什么打印出来时1,设置成100,却是101呢?

4 个回复

倒序浏览
因为行号随数据读取在每个行结束符处递增,遇到了第一行结束符后就在第一行变成了 1 ,默认是0,遇到换行符就变成 1 了 ,101也一样
回复 使用道具 举报
  1. 同学, 最开始我也纠结这个问题, 最后思考后得到结论, 因为java计数是从0开始的, LineNumberRead遇到回车符就会 +1,并且把这个值赋给当前行, 所以就是从1 开始的
  2. import java.io.FileNotFoundException;
  3. import java.io.FileReader;
  4. import java.io.IOException;
  5. import java.io.LineNumberReader;

  6. public class SunJingQi {

  7.         public static void main(String[] args) {

  8.                 FileReader fr = null;
  9.                 LineNumberReader lnr = null;

  10.                 try {
  11.                         fr = new FileReader("e:\\sunjingqi.txt");
  12.                         lnr = new LineNumberReader(fr);

  13.                         // 设置数字,从几开始
  14.                         lnr.setLineNumber(100);
  15.                         String line = null;
  16.                         while ((line = lnr.readLine()) != null) {
  17.                                 // 得到行数,从0开始
  18.                                 System.out.println(lnr.getLineNumber() + ":" + line);
  19.                         }
  20.                 } catch (FileNotFoundException e) {
  21.                         throw new RuntimeException("文件没有找到");
  22.                 } catch (IOException e) {
  23.                         throw new RuntimeException("读取文件失败");
  24.                 }
  25.                 try {
  26.                         if (lnr != null)
  27.                                 lnr.close();
  28.                 } catch (IOException e) {
  29.                         throw new RuntimeException("读取关闭失败");
  30.                 }
  31.         }
  32. }
复制代码
回复 使用道具 举报
我查Api:认情况下,行编号从 0 开始。该行号随数据读取在每个行结束符处递增,并且可以通过调用 setLineNumber(int) 更改行号。但要注意的是,setLineNumber(int) 不会实际更改流中的当前位置;它只更改将由 getLineNumber() 返回的值。

可认为行在遇到以下符号之一时结束:换行符('\n')、回车符('\r')、回车后紧跟换行符。



从以下版本开始:
回复 使用道具 举报
LineNumberReader lnr = new LineNumberReader(new FileReader("E:/222.txt"));
String line = null;
lnr.setLineNumber(10); //更改 行号,默认由0变成10;
while ((line = lnr.readLine()) != null) {
  //一行读完后,遇上换行符,行号加1
int lineNumber = lnr.getLineNumber(); // 得到行号为11
  System.out.println(lineNumber + " : " + line);}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马