Pregunta

Estoy confundido. Estoy tratando de recorrer 2 archivos mirando el primer token en cada línea del primer archivo y comparándolo con el tercer token de cada línea del segundo archivo. Aquí está la estructura lógica en forma de un bucle while anidado:

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

Sin embargo, todo lo que veo en el resultado es el primer token de la primera línea del primer archivo y el tercer token de cada línea del segundo archivo repetido 6,000 (la longitud del archivo 2) independientemente de si fueron " ; igual '' o no. ¿Tiene esto que ver con sus diferentes codificaciones? Puedo ver que tiene un efecto en la prueba de igualdad, pero ¿por qué el bucle no se comporta correctamente?

Saludos, Brandon

¿Fue útil?

Solución

es el; detrás del if

if(temp2.equals(temp1));

Pero probablemente no funcionaría de todos modos como se esperaba, ya que debe volver a abrir el archivo 2 dentro del bucle externo, de lo contrario, solo funcionará correctamente para la primera línea del archivo 1

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top