0

よくわかりません。2つのファイルをループして、最初のファイルのすべての行の最初のトークンを調べ、それを2番目のファイルのすべての行の3番目のトークンと比較しようとしています。ネストされたwhileループの形式の論理構造は次のとおりです。

BufferedReader reader1 = new BufferedReader(new InputStreamReader(new FileInputStream(fromFile1)));

BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(fromFile2),"EUC-JP"));

String line1, line2 = null;
String temp1, temp2 = null;

while ((line1=reader1.readLine()) != null)
{
    StringTokenizer st1 = new StringTokenizer(line1);
    temp1 = "U"+st1.nextToken();
    while((line2=reader2.readLine()) != null)
    {
        StringTokenizer st2 = new StringTokenizer(line2);
        temp2 = st2.nextToken();
        temp2 = st2.nextToken();
        temp2 = st2.nextToken();
        if(temp2.equals(temp1));
        {
            System.out.println(temp1+" "+temp2);
        }
    }
}

ただし、出力に表示されるのは、最初のファイルの最初の行の最初のトークンと、「等しい」かどうかに関係なく、6,000回(ファイルの長さ2)繰り返された2番目のファイルのすべての行の3番目のトークンだけです。いいえ。これは、異なるエンコーディングと関係がありますか?イコールテストに影響があることはわかりますが、ループが正しく動作しないのはなぜですか?

乾杯、ブランドン

4

1 に答える 1

4

それは; ifの後ろ

if(temp2.equals(temp1));

ただし、外側のループ内でファイル2を再度開く必要があるため、期待どおりに機能しない可能性があります。そうしないと、ファイル1の最初の行でのみ正しく機能します。

于 2009-10-26T20:39:44.357 に答える