2013-01-10 24 views
0

我想知道为什么这不起作用?我一直在看它一段时间,想知道为什么它不起作用。它似乎没有阅读if语句。一切看起来都适合我,即使你输入了像“A5”这样的合法字符串。Java字符串循环不读如果语句

System.out.println("PLEASE TYPE IN A COORDINATE, LETTER FIRST, THEN NUMBER."); 
    System.out.println(); 
    System.out.print("CAPITALS ONLY, PLEASE. ENTER COORDINATE HERE: "); 

    String placement = scan.next(); 
    String letter = placement.substring(0,1); 
    String number = placement.substring(1); 

    System.out.println(letter); 
    //System.out.println(placement); 
    System.out.println(number); 

    String cord[] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"}; 

    for(int s = 0; s < cord.length; s++) 
    { 
     //System.out.println(cord[s]); 
     if(cord[s] == letter) 
     { 
      System.out.print("yay, it worked"); 
     } 
    } 

回答

7

常见错误:String/Object比较应该用equals()代替==(除了字符串文字比较)。

if(cord[s] == letter) 

应该是

if(letter.equals(cords[s])) 

equals()比较对象内容相等。 ==比较参考平等。

+2

通常,您应该使用equals()而不是== ==比较对象。 (这是为OP,而不是回答者。) –

+0

另一个问题:如果数组充满整数而不是字符串,那么该怎么办? –

+0

@RobertHartley:如果数组是int(原始类型)数组,则使用==。你不能在原始类型上调用equals(),这将是编译时错误。 – kosa

1

letterString对象。在您的循环中,cord[s]也是String对象。但他们是两个不同的对象。

书写letter == cord[s]不比较值,它比较引用。您需要使用.equals()来比较值,即编写letter.equals(cord[s])

请参阅javadoc on Object,特别是.equals()/.hashCode()