-1

当我遇到错误时,我正在制作我正在制作的游戏。我的 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。(我正在制作的游戏包含很多厕所幽默。)无论如何,如果有人看到我在这段代码中的错误,请告诉我。如果您需要更多代码,请告诉我。

4

6 回答 6

2

对于 JavaString对象,==运算符不比较字符串值。
尝试将第一个if比较更改为:

if(Peeamnt.getText().equals(neededCredits)) {

您也需要为 the 做类似的事情else if

于 2013-09-11T01:11:47.763 回答
1

使用equals方法比较 String 对象,因为==运算符意味着您根据内存地址比较对象。永远记住永远不要使用==来比较 Java 中的对象。

于 2013-09-11T01:21:11.480 回答
1

字符串是对象。对象有参考。包含相同字符序列的两个 String 对象可能不是同一个对象,因此具有不同的引用。操作员(==通常)检查引用是否相等。

要比较两个 String 对象的字符序列是否相等,您有equals方法。所以Peeamnt.getText().equals(neededCredits)改用。

于 2013-09-11T01:12:22.163 回答
1

字符串是一个对象。比较Object,你必须使用equals来判断Object内容是否相同。使用==是比较对象引用

于 2013-09-11T01:13:03.117 回答
0

getText()如果返回字符串不使用==符号,请尝试使用 equals 方法。我想那个getText() returns aString` 对象。

仅供参考:双等号用于查看两个对象是否相同,并equals()应使用检查对象是否具有相同值的方法。注意:您与之比较的对象equals()应该覆盖它,否则结果会损坏,并且当您覆盖equals()方法时,最后一件事记得也要覆盖hashCode()

于 2013-09-11T01:10:57.200 回答
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);
}
于 2013-09-11T01:19:08.070 回答