Pourquoi une chaîne lue à partir d'un fichier txt à l'aide de java scanner n'est-elle pas égale à une chaîne identique? [dupliquer]


Cette question a déjà des réponses ici: Comment comparer les chaînes en Java? (23 réponses) Fermé il y a 2 ans.

Ci-dessous est mon code, le but est de lire les instructions d'un fichier txt pour les faire préformer par le robot java. Lorsque vous changez une partie de l'instruction if en != la partie robot fonctionne, donc je dois penser que les chaînes ne sont en quelque sorte pas égales.

public void interpretGoo() throws AWTException, FileNotFoundException, 
InterruptedException{
    Scanner scanner = new Scanner( new File("instruct.txt") );
    String in;
    String instruct = "";
    while(scanner.hasNextLine()== true){
        in = scanner.nextLine();
        instruct+= in;
    }
    scanner.close();

    String[] instructSet= instruct.split("-");
    System.out.println("String: " + instruct);

    String[] command= new String[10];
    for(int i= 0; i< instructSet.length;i++){
        command= instructSet[i].split(" ");
        System.out.println("Set: " + instructSet[i]);
        System.out.println("Word: " + command[0]);
        if(command[0].trim()== "key"){
            keyboardHandler(command[1].charAt(1));
            Thread.sleep(150);
        }else if(command[0].trim()== "clickL"){
            accuMouse(Integer.parseInt(command[1]),Integer.parseInt(command[2]), 1, false);
        }else if(command[0].trim()== "clickR"){
            accuMouse(Integer.parseInt(command[1]),Integer.parseInt(command[2]), 0, true);
        }else{
            System.out.println("FAIL");
            continue;
        }
    }
}

SORTIE:

String: clickL 728 1062-clickL 540 382-key h-key e-key l-key l-key o-
Set: clickL 728 1062
Word: clickL
FAIL
Set: clickL 540 382
Word: clickL
FAIL
Set: key h
Word: key
FAIL
Set: key e
Word: key
FAIL
Set: key l
Word: key
FAIL
Set: key l
Word: key
FAIL
Set: key o
Word: key
FAIL

Selon la sortie, les chaînes sont identiques mais échouent aux vérifications, toute aide serait appréciée!

Author: Hopelessdecoy, 2018-07-16

1 answers

Vous devez utiliser .equals pour la comparaison de chaînes en Java. Vous trouverez de nombreuses chaînes identiques ne s'égalent pas si vous utilisez simplement ==. Il en va de même pour la plupart des objets. En général, il est plus sûr d'utiliser .equals() pour l'égalité en Java.

 1
Author: K. Dackow, 2018-07-16 18:21:39