У меня есть этот метод, который вызывается несколько раз в день.
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-Statement" вызывается каждый день.Я создал bool под названием xbool, чтобы помочь вызывать мой метод один раз в день.Также будет вызван метод, приведенный ниже.
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;
}
}
Моя проблема - однажды наступит следующий день.то есть другой оператор 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 верный.Так что в этот новый день не будет вызова reStartDay (), потому что xbool не ложь.Я решил переключить каждый оператор if в dayUpdater на противоположный.Что выглядит так:
if (day.equals(Days[0])) {
if (xbool == false){
reStartDay();
xbool = true;
}
}
if (day.equals(Days[2])) {
if (xbool == true){
reStartDay();
xbool = false;
}
}
Среда проверяет на ложность и превращает xbool в true.и т. д. и т. д. вы получите шаблон.
Как только я доберусь до воскресенья, хотя оно не соответствует ожиданиям понедельника, Sunday проверяет, является ли xbool ложным, и изменяет его на true.
Но понедельник ожидает, что xbool будет ложным, поэтому он может вызватьreStartDay () для понедельника.Мне нужны предложения о том, что делать.или что поменять.Пожалуйста, я никогда не был хорош с логическим, поэтому я знаю, что я узнаю что-то независимо от ответа / предложения, которое я получу.