0

我很困惑。我正在尝试遍历 2 个文件,查看第一个文件的每一行中的第一个标记,并将其与第二个文件的每一行的第三个标记进行比较。以下是嵌套 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 的长度)次,无论它们是否“相等”或不是。这是否与它们的不同编码有关?我可以看到这对 equals 测试有影响,但为什么循环不能正常运行?

干杯,布兰登

4

1 回答 1

4

这是; 如果在后面

if(temp2.equals(temp1));

但它可能不会按预期工作,因为您必须在外部循环中重新打开文件 2,否则它只会对文件 1 的第一行正常工作

于 2009-10-26T20:39:44.357 回答