字符串不等于字符串?

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!"); 

为什么Fk耶! 如果我输入一个AL字母,就不会发生?

字符串是对象。 ==按引用比较对象,而不是它们的内部值。

有两种解决方案:

  1. 使用String#equals()方法来比较两个String对象的值。

     if (letters[x].equals(cord[1])) 
  2. 使用char而不是String 。 它是原始的,所以==会起作用。

     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!"); 

要比较字符串的相等性,请不要使用==。 ==运算符检查两个对象是否完全相同。 两个字符串可以是不同的对象,但具有相同的值(在它们中具有完全相同的字符)。 使用.equals()方法比较字符串是否相等。 同样,使用.compareTo()方法测试不相等的比较。 例如,

 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>