如何在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=。。..您的代码不会从使用数组中获得任何好处。