黑马程序员技术交流社区

标题: LineNumberReader为什么没打印出行号为0的行呢 [打印本页]

作者: 不抛弃不放弃    时间: 2013-12-8 17:15
标题: LineNumberReader为什么没打印出行号为0的行呢
本帖最后由 不抛弃不放弃 于 2013-12-8 19:27 编辑

LineNumberReader为什么没打印出行号为0的行呢,我是顶着第一行写的,这个类不是说行号从零开始吗,怎么打印的是从一开始的

作者: Weix1992    时间: 2013-12-8 17:25
如果你用LineNumberReader的read 或 readLine()方法 每一次读取lineNumber都会+1了,

  1. public int read(char cbuf[], int off, int len) throws IOException {
  2.         synchronized (lock) {
  3.             int n = super.read(cbuf, off, len);

  4.             for (int i = off; i < off + n; i++) {
  5.                 int c = cbuf[i];
  6.                 if (skipLF) {
  7.                     skipLF = false;
  8.                     if (c == '\n')
  9.                         continue;
  10.                 }
  11.                 switch (c) {
  12.                 case '\r':
  13.                     skipLF = true;
  14.                 case '\n':        /* Fall through */
  15.                     lineNumber++;
  16.                     break;
  17.                 }
  18.             }

  19.             return n;
  20.         }
  21.     }


  22. public String readLine() throws IOException {
  23.         synchronized (lock) {
  24.             String l = super.readLine(skipLF);
  25.             skipLF = false;
  26.             if (l != null)
  27.                 lineNumber++;
  28.             return l;
  29.         }
  30.     }
复制代码





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