2011-08-20 111 views
10
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呀!如果我输入A-L字母之一,就不会发生?字符串不等于字符串?

+0

你确定'cord'实际上只是字母而没有空白吗? – 2011-08-20 00:43:50

+0

也可以是大写与小写 – Jody

+0

是的,我相信100%。不,他们都是大写。 –

回答

22

字符串是对象。 ==通过引用比较对象,而不是内部值。

有2个解决方案:

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

圣牛你有很多徽章 – 2011-08-20 00:47:57

+2

@Code:与Jon Skeet相比,这没什么。 – BalusC

+0

以及祝贺任何一种方式:)我向你低头Sir – 2011-08-20 00:53:05

11

比较字符串是否相等,不使用==。 ==运算符检查两个对象是否完全相同。两个字符串可能是不同的对象,但具有相同的值(在它们中具有完全相同的字符)。使用.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>