当我遇到错误时,我正在制作我正在制作的游戏。我的if / else if语句跳转到else if语句,即使它不应该。
String neededCredits = "200";
if(Peeamnt.getText() == neededCredits) {
System.out.println("You can afford this");
JOptionPane.showMessageDialog(BuyPoopButton,
"You have unlocked the Poop Button for 200 Pee Credits!",
"Toilet Master",
JOptionPane.WARNING_MESSAGE);
}
else if((!(Peeamnt.getText() == neededCredits))) {
System.out.println("You cannot afford this");
JOptionPane.showMessageDialog(BuyPoopButton,
"You do not have enough Credits to buy this!\n"
+ "To buy it, you need 200 Pee Credits!",
"Toilet Master",
JOptionPane.ERROR_MESSAGE);
}
即使Peeamnt的文本是偶数200,代码也会跳转到else if语句,告诉我我没有200 Pee Credits。 (我正在制作的游戏包括很多厕所幽默。)无论如何,如果有人看到我在此代码中出现的错误,请告诉我。如果您需要更多代码,请与我们联系。
答案 0 :(得分:2)
使用Java String
对象时,==
运算符不会比较字符串值
尝试将第一个if
比较更改为:
if(Peeamnt.getText().equals(neededCredits)) {
您还需要为else if
做类似的事情。
答案 1 :(得分:1)
字符串是对象。对象有参考。包含相同字符序列的两个String对象可能不是同一个对象,因此具有不同的引用。 ==
运算符(通常)检查引用相等性。
要比较两个String对象的字符序列是否相等,您需要equals
方法。所以请改用Peeamnt.getText().equals(neededCredits)
。
答案 2 :(得分:1)
String是一个Object。比较对象,您必须使用equals
来判断对象内容是否相同。使用==
来比较对象引用
答案 3 :(得分:1)
使用 equals 方法比较String对象,因为 == 运算符意味着您在内存地址上比较对象。永远记住永远不要使用 == 来比较Java中的对象。
答案 4 :(得分:0)
如果getText()
返回不使用==
符号的字符串,请尝试使用equals方法。我想getText() returns a
String`对象。
FYI:双等号用于查看两个对象是否相同
并检查对象是否具有相同的值equals()
方法应该使用。注意:您与equals()
进行比较的对象应该覆盖它,否则结果会被破坏,而当您覆盖equals()
方法时,最后一件事也要记住覆盖hashCode()
。
答案 5 :(得分:0)
使用方法equals来比较String对象,因为==运算符意味着您在内存地址上比较对象。 *永远不要使用==来比较对象。
String neededCredits = "200";
if(neededCredits.equals(Peeamnt.getText()) {//compare following you never see, because nullPointerException "neededCredits" always has value :-)
System.out.println("You can afford this");
JOptionPane.showMessageDialog(BuyPoopButton,
"You have unlocked the Poop Button for 200 Pee Credits!",
"Toilet Master",
JOptionPane.WARNING_MESSAGE);
}
else if((!(neededCredits.equals(Peeamnt.getText()))) {
System.out.println("You cannot afford this");
JOptionPane.showMessageDialog(BuyPoopButton,
"You do not have enough Credits to buy this!\n"
+ "To buy it, you need 200 Pee Credits!",
"Toilet Master",
JOptionPane.ERROR_MESSAGE);
}