Question

Je suis confus. J'essaie de boucler deux fichiers en examinant le premier jeton de chaque ligne du premier fichier et en le comparant au troisième jeton de chaque ligne du deuxième fichier. Voici la structure logique sous la forme d'une boucle while imbriquée:

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

Cependant, tout ce que je vois dans la sortie est le premier jeton de la première ligne du premier fichier et le troisième jeton de chaque ligne du deuxième fichier répété 6 000 fois (la longueur du fichier 2) fois, qu'ils soient ou non ; égal " ou pas. Est-ce que cela a à voir avec leurs différents encodages? Je peux voir que cela a un effet sur le test d’égal à égal, mais pourquoi la boucle ne se comporte pas correctement?

Salut, Brandon

Était-ce utile?

La solution

c'est le; derrière le si

if(temp2.equals(temp1));

Mais cela ne fonctionnerait probablement pas comme prévu, car vous devez rouvrir le fichier 2 dans la boucle externe, sinon cela ne fonctionnera correctement que pour la première ligne du fichier 1

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top