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

...

など(印刷されているintは、カウンターが増加していることを確認できるようにするためです)。問題は、テキストの 100 行目で停止するのではなく、ファイルの最後まで実行されることです。私の質問は、どうすれば100行目以降の印刷を停止できますか?

前もって感謝します。

4

4 に答える 4

2

while条件を組み合わせる必要があります

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

(編集:johnbkが述べているように、カウントチェックは次のようになります< 100

于 2010-10-14T18:31:07.947 に答える
2

さて、あなたの内部ループはファイルの終わりまで実行されています..両方の条件をキャプチャする必要があり、100 ではなく 101 行を印刷しようとしています。100 行を印刷するには、count が「0」に初期化されるため、c < 100 をチェックする必要があります。

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

ただの推測ですが、実際には、2つの条件を組み合わせてみるかもしれません。

   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 に答える