Java anidado mientras bucle usando readline
-
06-07-2019 - |
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
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