Domanda

Sono confuso. Sto cercando di eseguire il looping di 2 file guardando il primo token in ogni riga del primo file e confrontandolo con il terzo token di ogni riga del secondo file. Ecco la struttura logica sotto forma di un ciclo while nidificato:

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

Tuttavia, tutto ciò che vedo nell'output è il primo token della prima riga del primo file e il terzo token di ogni riga del secondo file ripetuto 6.000 (la lunghezza del file 2) volte indipendentemente dal fatto che fossero " ; pari " o no. Questo ha a che fare con le loro diverse codifiche? Posso vedere che ha un effetto sul test uguale, ma perché il loop non si comporta correttamente?

Saluti, Brandon

È stato utile?

Soluzione

è il; dietro l'if

if(temp2.equals(temp1));

Ma probabilmente non funzionerà comunque come previsto, poiché è necessario riaprire il file 2 all'interno del ciclo esterno, altrimenti funzionerà correttamente solo per la prima riga del file 1

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top