Java第一次运行后不会更新变量

时间:2015-08-07 20:56:29

标签: java

很抱歉要求它,但我在Java上真的很棒。当我们要求showWindow ...

public static String checkList;

public static String getCheckList(){
    return checkList;
}

public static void setCheckList(String queryToSelect){
    checkList = queryToSelect;
}

public static void showWindow(User user)
{
    if (!checkConditions(user))
        return;

    String msg;
    String queryToSelectshow;

    if (user.getNetConnection().getBonus() > 0.)
    {
        msg = main(user);
        queryToSelectshow = "SELECT * FROM prodlist WHERE canUse = 1 ORDER BY description ASC, id";
    }
    else
    {
        msg = main(user);
        queryToSelectshow = "SELECT * FROM prodlist WHERE canUse = 2 ORDER BY description ASC, id";
    }
    setCheckList(queryToSelectshow);
    showCommunity(user, msg);
}

如果用户有奖金,那么queryToSelectshow 1 else queryToSelectshow 2,但如果我使用带有奖励的用户运行此设置queryToSelectshow 1,当我使用没有bunus的用户运行时,这仍然在queryToSelectshow 1中,并且需要是queryToSelectshow 2。

这是由"静电"引起的?功能?我试着没有静态,但是当我尝试这样做时,eclipse会向我显示很多错误消息!

感谢您的帮助和时间!

1 个答案:

答案 0 :(得分:2)

嗯......有很多我们看不到的代码,但是我建议你在进入if之前记录“user.getNetConnection()。getBonus()”中的值。或者如果您没有任何登录系统,只需使用System.out.println(user.getNetConnection().getBonus())显示它 通过这种方式,您可以确保您获得的值实际上将超过0。 此外,如果您使用的是IDE,请学习调试代码。快速搜索,例如Eclipse: Debug Eclipse

另外......你真的需要所有这些方法都是静态的吗?我会假设您正在这样做,因为如果没有,您不能通过main方法调用它们。在这种情况下,您可以从同一个类创建一个新对象:

MyObject object = new MyObject();

然后调用非静态方法:

object.nonStaticMethod();

我建议你尝试理解一个方法是静态的(对于变量也是!!!): Understanding Class Members