2

我不明白为什么这段代码工作正常,似乎没有任何增量器或计数器会在某个时候退出这个 while 循环。是什么使 readline 函数转到输入文件的下一行?

            while ((str = in.readLine()) != null) { 
                String [] dat = null;
                dat = baseballstats(str);
                for (int i = 0; i < dat.length; i++) {
                   out.print(dat[i]);
                   out.print (" ");

                }
                out.println();
            } 

我需要让它不只打印第一行,但我不知道是什么让它进入输入文件的下一行。

4

4 回答 4

1

readLine()读取文件中的所有文本,直到换行符(\r、\n 或 \r\n)

如果没有更多输入,则返回 null。

while 循环使其不断读取每一行,直到到达文件末尾。

于 2013-05-25T21:46:01.633 回答
1

您的循环是以下形式的基本while循环:

while(condition){
  ...
}

但是在您的情况下,您的条件恰好是两部分:首先是分配,然后是评估。你的情况基本上是:

  1. 赋值str给 的结果in.readLine
  2. 检查是否str为空,如果是,则退出循环。

它为每个循环迭代执行这两个部分条件,直到str最终为空,这意味着它已完成读取,并且循环退出。

于 2013-05-25T21:55:56.183 回答
0

第一行代码做了两件事:它尝试读取一行文本,然后检查该值是否为空:如果是,则读取终止。

于 2013-05-25T21:45:57.503 回答
0

str 每次都更改。它读取下一行并将其放入 str。当没有剩余的行 str 等于 null 时,它退出循环。

于 2013-05-25T21:46:32.043 回答