1

我正在尝试在 java 中使用文件阅读器和缓冲阅读器从 txt 文件中打印一定数量的行。该文件有超过 100000 行,但我只想打印前 100 行。

我想出的代码如下所示:

public class main {
    public static void main(String args[]) throws Exception {
        FileReader fr = new FileReader("words.txt");
        BufferedReader br = new BufferedReader(fr);
        String s;

        int count = 0;

        while (count <101)
            {
            while((s = br.readLine()) != null)

            {
            System.out.println(s);
            count++;
            System.out.println(count);
            }

        }
        fr.close();
        } 

}

它打印出如下内容:

it

1

was

2

a

3

sunny

4

day

...

依此类推(打印的整数只是为了让我可以看到计数器正在递增)。问题是,它一直到文件末尾,而不是在第 100 行文本之后停止。我的问题是,如何在第 100 行之后停止打印?

提前致谢。

4

4 回答 4

2

你需要结合你的while条件

while (count < 100 && (s = br.readLine()) != null) { ...

(编辑:正如 johnbk 提到的计数检查应该是< 100

于 2010-10-14T18:31:07.947 回答
2

好吧,您的内部循环一直运行到文件末尾。您必须同时捕获条件以及尝试打印 101 行而不是 100的方式。要打印 100 行,您需要检查 c < 100,因为 count 已初始化为 '0'

while ( count < 100  && (s = br.readLine()) != null) {
   System.out.println(s);
   count++;
  }
于 2010-10-14T18:44:18.643 回答
1

实际上只是一个猜测 - 但我可能会尝试结合这两个条件:

   while ((s = br.readLine()) != null && count < 100)
      System.out.println(s + " [line: "+(count++)+"]");

也许?

于 2010-10-14T18:31:06.037 回答
1

你不想使用嵌套的while循环,你想要类似的东西

while(count < 101 && (s = br.readLine()) != null){

一旦达到计数,这将停止文件读取。

于 2010-10-14T18:31:30.903 回答