Как вам нужно, чтобы день-номер в дневную строку дважды, поместите его в отдельную функцию. Я хочу показать вам несколько возможных подходов. Версия 1, базовая, простая и аккуратная:
// isolate the daynumber --> daystring in a function, that's tidier
String dayFor (int daynumber) {
String dayAsString = "ERROR"; // the default return value
switch(dayNumber) {
case 0 :
dayAsString = "Sunday";
break;
case 1 :
dayAsString = "Monday";
break;
// and so on, until
case 6 :
dayAsString = "Saturday";
break;
}
return dayAsString;
}
Более короткая версия, которая использует массив вместо оператора switch:
String dayFor (int daynumber) {
String dayStrings[] = new String[]{"Sunday","Monday", .... "Saturday"};
// notice that daynumber's modulo is used here, to avoid index out of
// bound errors caused by erroneous daynumbers:
return dayStrings[daynumber % 7];
}
Возможно, соблазн попробовать что-то вдоль линий следующей функции, где каждый случай возвращается немедленно, но наличие нескольких операторов возврата не рекомендуется. Просто покажите это здесь, потому что это технически возможно, и вы столкнетесь с ним иногда
String dayFor (int daynumber) {
switch(dayNumber) {
case 0 :
return "Sunday";
case 1 :
return "Monday";
// and so on, until
case 6 :
return "Saturday";
}
// normally not reached but you need it because the compiler will
// complain otherwise anyways.
return "ERROR";
}
. После этого довольно длительного ввода основная функция становится коротким и простым. После ввода вам просто нужно:
// present day + elapsed modulo 7 = the future day
int future = (day + elapsed) % 7;
System.out.print("Today is " + dayFor(day) + " and the future day is " + dayFor(future) );
Не забудьте добавить код, чтобы проверить свои входы!