Это для школьного проекта.
Вот код:
// get the remaining available hours
public int getAvailableHours(Subject sub) {
DateTime dt = new DateTime();
int hours = 0;
int mondays = 0;
int tuesdays = 0;
int wednesdays = 0;
int thursdays = 0;
int fridays = 0;
int saturdays = 0;
int sundays = 0;
if(sub != null) {
if(!sub.getExamDate().isBefore(dt)) {
int days = Days.daysBetween(dt, sub.getExamDate()).getDays();
// DEBUGGING - take out
System.out.println(days);
System.out.println(dt);
System.out.println(sub.getExamDate());
DateTime day = new DateTime();
for(int i = 1; i < days; i++) {
day.plusDays(i);
// DEBUGGING - take out
System.out.println(day.dayOfWeek().getAsText());
System.out.println(day.dayOfMonth().getAsText());
switch(day.dayOfWeek().getAsText()) {
case "Monday":
mondays++;
break;
case "Tuesday":
tuesdays++;
break;
case "Wednesday":
wednesdays++;
break;
case "Thursday":
thursdays++;
break;
case "Friday":
fridays++;
break;
case "Saturday":
saturdays++;
break;
case "Sunday":
sundays++;
break;
default:
break;
}
}
hours = (mondays * hoursOnMonday) + (tuesdays * hoursOnTuesday) +
(wednesdays * hoursOnWednesday) + (thursdays * hoursOnThursday)
+ (fridays * hoursOnFriday) + (saturdays * hoursOnSaturday)
+ (sundays * hoursOnSunday);
}
}
return hours;
}
То, что я пытаюсь сделать, - создать планировщик таблицы времени обучения. В моей программе есть часть, которая позволяет пользователю вводить, сколько времени они хотят изучать в каждый день. Итак, то, что я делаю выше, зацикливается на том, сколько дней есть и как много дней происходит (так, сколько понедельников, понедельников и т.д. Между датой и датой экзамена этого предмета), поэтому я могу рассчитать, сколько общее количество часов, которое пользователь должен изучить.
Но теперь я пытаюсь пропустить его, и он всегда возвращает "Среда", он не увеличивается. Сегодня, в Южной Африке, это среда первого октября, но приложение теперь, похоже, увеличивает этот день, чтобы понять, что он смотрит в четверг второй октября (завтра). Я думаю, что проблема day.plusDays(i);
с этой строкой: day.plusDays(i);
, но я не знаю, как это сделать.
это непреложный экземпляр, поэтому вам придется его поймать
day = day.plusDays(i);
Этот экземпляр datetime неизменен и не подвержен влиянию этого вызова метода. от doc