我很困惑。我试图通过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测试产生影响,但为什么循环表现不正常呢?
干杯, 布兰登
答案 0 :(得分:4)
if(temp2.equals(temp1));
但它无论如何都不会按预期工作,因为你必须在外部循环中重新打开文件2,否则它只能在文件1的第一行正常工作