如何在Android Java方法中形成更好的布尔值

如何在Android Java方法中形成更好的布尔值,java,android,methods,boolean,Java,Android,Methods,Boolean,我有一个方法,一天内被调用多次 public void dayUpdater() { Date now = new Date(); SimpleDateFormat numDate = new SimpleDateFormat("EEEE"); String[] Days = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"}; String day = numDate

我有一个方法,一天内被调用多次

public void dayUpdater() {
    Date now = new Date();
    SimpleDateFormat numDate = new SimpleDateFormat("EEEE");

    String[] Days = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
    String day = numDate.format(now);

    if (day.equals(Days[0])) {
        Toast.makeText(getApplicationContext(), "Total for " + numDate.format(now)
                + " is " + 5000, Toast.LENGTH_LONG).show();
    if (day.equals(Days[1])) Toast.makeText(getApplicationContext(), "Total for " + numDate.format(now)
                + " is " + 5000, Toast.LENGTH_LONG).show();
    if (day.equals(Days[2])) Toast.makeText(getApplicationContext(), "Total for " + numDate.format(now)
                + " is " + 4000, Toast.LENGTH_LONG).show();
    if (day.equals(Days[3])) Toast.makeText(getApplicationContext(), "Total for " + numDate.format(now)
                + " is " + 3000, Toast.LENGTH_LONG).show();
    if (day.equals(Days[4])) Toast.makeText(getApplicationContext(), "Total for " + numDate.format(now)
                + " is " + 2000, Toast.LENGTH_LONG).show();
    if (day.equals(Days[5])) Toast.makeText(getApplicationContext(), "Total for " + numDate.format(now)
                + " is " + 1000, Toast.LENGTH_LONG).show();
    if (day.equals(Days[6])) Toast.makeText(getApplicationContext(), "Total for " + numDate.format(now)
                + " is " + 1000, Toast.LENGTH_LONG).show();

}
现在每天只调用1个if语句。我已经创建了一个名为xbool的bool来帮助每天调用一次我的方法。另外,要调用的方法如下所示

private boolean xbool = true;

private void reStartDay() {
    saveAllContents();
    clearAllEntries();
}
如果xbool为false,则调用我们的方法,然后将其转换为true。如果这是真的,我们什么也不做。下面是应用于每个if语句的工作示例

if (day.equals(Days[0])) {
        Toast.makeText(getApplicationContext(), "Total for " + numDate.format(now)
                + " is " + 5000, Toast.LENGTH_LONG).show();
        if (xbool == false) {
            reStartDay();
            xbool = true;
        }
    }
我的问题是第二天一到。i、 e.在这种情况下,另一个if语句从上述代码到:

if (day.equals(Days[1])) {
        Toast.makeText(getApplicationContext(), "Total for " + numDate.format(now)
                + " is " + 5000, Toast.LENGTH_LONG).show();
        if (xbool == false) {
            reStartDay();
            xbool = true;
        }
    }
其中,天现在等于天[1],而不是天[0]。问题是我的xbool是真的。因此,在新的一天不会有重新开始的电话,因为xbool不是假的。 我决定将dayUpdater中的每个if语句切换到相反的位置。看起来是这样的:

if (day.equals(Days[0])) { 
    if (xbool == false){
        reStartDay();
        xbool = true;
    }
}
if (day.equals(Days[2])) { 
    if (xbool == true){
        reStartDay();
        xbool = false;
    }
}
星期三检查false并将xbool变为true。等等。。你明白了

一旦我到了星期天,尽管它不符合星期一的期望,但星期天会检查xbool是否为false并将其更改为true

但周一预计xbool为假,因此它可以在周一调用reStartDay。 我需要关于做什么的建议。或者改变什么。请
我从来都不擅长布尔运算,所以我知道无论我得到什么答案/建议,我都会学到一些东西。

根据您的代码,看起来您希望每天只执行一次特定代码,尽管该方法每天运行多次

为了实现同样的目标,您可以这样做

像这样声明一个实例变量

private String currentDay = null;
public void dayUpdater() {
    Date now = new Date();
    SimpleDateFormat numDate = new SimpleDateFormat("EEEE");
    String[] Days = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
    String day = numDate.format(now);
    if (!day.equals(currentDay)) {
        Toast.makeText(getApplicationContext(), "Total for " + day
                + " is " + 5000, Toast.LENGTH_LONG).show();
        reStartDay();
        currentDay = day;
    }
}
在你的dayUpdater方法中,不要写那么多的if,如果你只是这样写会怎么样

private String currentDay = null;
public void dayUpdater() {
    Date now = new Date();
    SimpleDateFormat numDate = new SimpleDateFormat("EEEE");
    String[] Days = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
    String day = numDate.format(now);
    if (!day.equals(currentDay)) {
        Toast.makeText(getApplicationContext(), "Total for " + day
                + " is " + 5000, Toast.LENGTH_LONG).show();
        reStartDay();
        currentDay = day;
    }
}

希望这对您有用。

您可以去掉字符串[]天={Monday…声明为wellBeyond:每次当你有一个数组或列表,并且你开始手动放置这样的索引时…你做了一些错误的事情。基本主题是在循环中迭代这样的结构,并避免像你那样使用它们。你看,你也可以编写字符串day1=…;字符串day2=。。..您的代码不会从使用数组中获得任何好处。