如果语句不起作用,则简单Java If / Else

时间:2013-09-11 01:06:52

标签: java if-statement

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

6 个答案:

答案 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);
}