黑马程序员技术交流社区

标题: LineNumberRead的行号问题 [打印本页]

作者: 谜燕    时间: 2014-3-16 23:01
标题: LineNumberRead的行号问题
默认从0开始可为什么打印出来时1,设置成100,却是101呢?
作者: Dijkstra    时间: 2014-3-17 14:51
因为行号随数据读取在每个行结束符处递增,遇到了第一行结束符后就在第一行变成了 1 ,默认是0,遇到换行符就变成 1 了 ,101也一样
作者: 孙旌棋    时间: 2014-4-20 16:18
  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. }
复制代码

作者: 张志成    时间: 2014-4-20 19:59
我查Api:认情况下,行编号从 0 开始。该行号随数据读取在每个行结束符处递增,并且可以通过调用 setLineNumber(int) 更改行号。但要注意的是,setLineNumber(int) 不会实际更改流中的当前位置;它只更改将由 getLineNumber() 返回的值。

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



从以下版本开始:

作者: 张志成    时间: 2014-4-20 20:09
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);}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2