0

ファイルに含まれる文字数 (空白を含む) を出力するようプログラムに要求するプログラムを作成しています。私が今持っているコードは毎回0を返しますが、なぜ文字を数えていないのか分かりません。

public int getcharCount(Scanner textFile) {

        int count = 0;

        while(textFile.hasNext()) {
            String line = textFile.nextLine();
            for(int i=0; i < line.length(); i++)
                count++;
        }   
        return count;

    }

編集: 私のプログラムの仕様では、スキャナーを使用する必要があると書かれています。よくわかりませんが、forループに到達しているとは思いません。同じ手法を使用してファイル内の行数を数えたところ、完全に機能しました。そのコードは次のとおりです。

 public int getLineCount(Scanner textFile) {
    int lineCount = 0;

    while(textFile.hasNext()) {
        String line = textFile.nextLine();
        lineCount++;
    }

    return lineCount;
}

また、行に何かが含まれているかどうかを確認する必要はありません。ただし、テキスト ファイルの途中にある場合は、1 文字としてカウントする必要があります。

4

6 に答える 6

6

うまくいかない理由はわかりませんが(以下のコードでは修正されません)、

  for(int i=0; i < line.length(); i++)
            count++;

のようにもっと簡潔に書くことができます

  count += line.length();
于 2010-03-31T01:22:16.170 に答える
4

スキャナーを使用している理由は何ですか? 単純な Reader で十分です。どうしてもスキャナーを使用する場合は、入力を何らかのパターン (デフォルトではスペース) で区切られたフィールドに分割することを理解する必要があります。おそらく、フィールドが文字に対応するように空のパターンを設定できます (ただし、これはやり過ぎです。リーダーを使用してください)

于 2010-03-31T01:25:52.483 に答える
1

スキャナーに渡す前に、スキャナーからすべてをすでに読んだことがありますgetcharCount()か?

于 2010-03-31T01:42:05.097 に答える
0

私は Scanner をあまり使ったことがありませんが、使うつもりはありません

textFile.hasNextline();

よりも少し理にかなっている

textFile.hasNext();

ただの考えです-それが実行に大きな影響を与えるかどうかはわかりません

于 2010-03-31T02:24:20.737 に答える
0

ファイルを割り当てて開き、最初にリセットする必要があります。あなたはそれを何も示していません。

于 2010-03-31T01:21:57.240 に答える
0

スキャナーに設定している区切り文字は何ですか? コードには表示されませんが、行を単一のトークンとして扱うようにする必要があります。

scanner.useDelimiter("\n");

また、2 番目のコード例は完全に機能したとおっしゃいました。行に何かが含まれていることを確認するために、行の値を出力しましたか? 行が適切にカウントされている可能性がありますが、行に実際に何も含まれていない場合は、 for ループに入らない理由を説明するのに役立ちます。

于 2010-03-31T01:30:43.343 に答える