Вопрос

Я в замешательстве.Я пытаюсь выполнить цикл из 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);
        }
    }
}

Однако все, что я вижу в выходных данных, - это первый токен из первой строки первого файла и третий токен из каждой строки второго файла, повторяющиеся 6000 (длина файла 2) раз, независимо от того, были ли они "равны" или нет.Имеет ли это отношение к их разным кодировкам?Я вижу, что это влияет на тест equals, но почему цикл не работает должным образом?

Приветствия, Брэндон

Это было полезно?

Решение

это тот самый ;за " если "

if(temp2.equals(temp1));

Но, вероятно, это все равно не сработало бы так, как ожидалось, поскольку вы должны повторно открыть файл 2 во внешнем цикле, иначе он будет корректно работать только для первой строки файла 1

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top