我想知道为什么这不起作用?我已经看了一会儿,想知道为什么它不起作用。它似乎没有读取if语句。即使你输入了像“A5”这样的合法字符串,一切看起来也都适合我。
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");
}
}
答案 0 :(得分:7)
常见错误:String/Object
比较应使用equals()
而不是==
(字符串文字比较除外)。
if(cord[s] == letter)
应该是
if(letter.equals(cords[s]))
equals()
比较对象内容的相等性。 ==
比较参考相等。
答案 1 :(得分:1)
letter
是String
个对象。在您的循环中,cord[s]
也是String
对象。但它们是两个不同的对象。
编写letter == cord[s]
不会比较值,它会比较引用。您需要使用.equals()
来比较值,即写letter.equals(cord[s])
。
请参阅对象上的javadoc,特别是.equals()
/ .hashCode()
。