很抱歉要这个,但是我真的对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否则为queryToSelectshow 2,但是如果我与具有红利的用户一起运行,则此设置为queryToSelectshow 1;当我与没有任何优惠的用户一起运行时,此选项仍在queryToSelectshow 1中,并且需要为queryToSelectshow 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

10-07 12:51