Pergunta

Estou confuso. Eu estou tentando fazer um loop que 2 arquivos olhando para o primeiro sinal em cada linha do primeiro arquivo e comparando-a com o terceiro símbolo de cada linha do segundo arquivo. Aqui está a estrutura lógica na forma de um loop while aninhados:

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);
        }
    }
}

No entanto, tudo o que vejo na saída é o primeiro símbolo da primeira linha do primeiro arquivo eo terceiro símbolo de cada linha do segundo arquivo repetido 6.000 (o comprimento do arquivo 2) vezes, independentemente de eles eram " igual" ou não. Será que isso tem a ver com suas codificações diferentes? Eu posso ver que ter um efeito sobre o iguala teste, mas por que não é o loop comportando adequadamente?

Cheers, Brandon

Foi útil?

Solução

é o; por trás do caso

if(temp2.equals(temp1));

Mas não provavelmente iria funcionar de qualquer maneira como esperado, já que você deve reabrir arquivo 2, dentro do ciclo exterior, caso contrário ele só vai funcionar corretamente para a primeira linha do arquivo de 1

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top