I have this code:
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String answer = input.nextLine();
if(answer == "yes"){
System.out.println("Yea I programmed this right!");
}else{
System.out.println("Awww :(");
}
}
}
But when I run it and type yes, it should be saying
“Yea I programmed this right!”
but it says
“Awww 🙁“
You’re comparing strings incorrectly. You must use the
equals()method, like this:When you’re programming in Java, the operator
==is generally used for comparing primitive data types (int,double, etc.). If you use==for comparing two object types (like strings), you’re comparing them for identity, that is, checking if they reference the same object in memory. In your case, what you need is to compare if they’re equal: if they have the exact same value (a string of characters in this case) even if they’re two different objects – and for that you must use theequals()method.EDIT :
Even better, for preventing a
NullPointerException, it’s considered a good practice flipping the order of the comparison and writing first the string you’re comparing with, like this:The explanation is simple: if for some reason
answerisnull, the above comparison will evaluate tofalse(meaning:answeris not"yes"), whereas the first version of the code would cause aNullPointerExceptionwhen trying to call theequals()method on anullvalue.