-3

Estoy intentando hacer un programa para preguntarme palabras de frances a mi mismo. He hecho este codigo, pero ponga lo que ponga me sale "Your answer is incorrect." (else condition). Ayuda please.

import java.util.Scanner;
public class AprenderPalabras {

    public static void main(String[] args) {
        Scanner wordL= new Scanner(System.in);
        Scanner wordR = new Scanner(System.in);
        Scanner answer= new Scanner(System.in);

        String wordL1= wordL.nextLine();
        String wordR1= wordR.nextLine();

        System.out.println(wordL1 + " -> ");

        String answer1= answer.nextLine();
        if (answer1==wordR1){
            System.out.println("Your answer is correct.");
        }
        else {
            System.out.println("Your answer is incorrect.");
        }
    }
}
JuanVan12
  • 149
  • 1
  • 11

1 Answers1

3

En java el operador == comprueba que ambas variables contienen la misma instancia, para comparar si dos cadenas texto continen el mismo texto hay que usar el método "equals", en tu caso seria:

answer1.equals(wordR1)

Mas ejemplos serian:

// Estas dos cadenas tendrian el mismo valor
new String("prueba").equals("prueba") // --> true 

// Estas dos variables no tienen la misma instancia
new String("prueba") == "prueba" // --> false 

// tampoco estas dos
new String("prueba") == new String("prueba") // --> false 

// las cadenas literales las maneja internamente el compilador
// por lo que si tienen la misma cadena comparten instancia
"prueba" == "prueba" // --> true