11
String[] letters  = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "L"};

Scanner inp = new Scanner(System.in);
String input = (inp.nextLine());
String[] cord = input.split("");

for(int x = 0; x < 10; x++)
    if(letters[x] == cord[1])
        System.out.println("Fk yeah!");

Why the Fk yeah! never happens if I input one of A-L letters?

Suhail Gupta
  • 22,386
  • 64
  • 200
  • 328
good_evening
  • 21,085
  • 65
  • 193
  • 298

2 Answers2

24

Strings are objects. The == compares objects by reference, not by their internal value.

There are 2 solutions:

  1. Use String#equals() method instead to compare the value of two String objects.

    if (letters[x].equals(cord[1]))
    
  2. Use char instead of String. It's a primitive, so == will work.

    char[] letters  = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'L'};
    
    Scanner inp = new Scanner(System.in);
    String input = (inp.nextLine());
    char[] cord = input.toCharArray();
    
    for (int x = 0; x < 10; x++)
        if (letters[x] == cord[1])
            System.out.println("Fk yeah!");
    
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
11

To compare Strings for equality, don't use ==. The == operator checks to see if two objects are exactly the same object. Two strings may be different objects, but have the same value (have exactly the same characters in them). Use the .equals() method to compare strings for equality. Similarly, use the .compareTo() method to test for unequal comparisons. For example,

String s = "something", t = "maybe something else";
if (s == t)      // Legal, but usually WRONG.
if (s.equals(t)) // RIGHT
if (s > t)    // ILLEGAL
if (s.compareTo(t) > 0) // CORRECT>