Для сокращения кода нужно из третьего метода nt weekdayCount вызвать второй weekendCount. Как это переделать, подскажите пожалуйста!
Реализуй три метода:
boolean isWeekend(String dayName) - метод принимает строку и отвечает, является ли данная строка выходным днем. Выходным днем являются Sunday и Saturday.
int weekendCount(String[] days) - метод принимает массив строк и возвращает количество выходных дней в этом массиве.
int weekdayCount(String[] days) - метод принимает массив строк и возвращает количество будних дней в этом массиве.
Требования:
методы должны быть public static
сигнатура метода isWeekend(String dayName)
метод возвращает boolean
сигнатура метода weekendCount(String[] days)
метод возвращает int
сигнатура метода weekdayCount(String[] days)
метод возвращает int
переиспользовать методы, не копировать код
public static boolean isWeekend(String dayName) { return (dayName.equalsIgnoreCase("Sunday") || dayName.equalsIgnoreCase("Saturday")); } public static int weekendCount(String[] days) { int weekend = 0; for (String day : days) { if (isWeekend(day)) { weekend++; } } return weekend; } public static int weekdayCount(String[] days) { int weekday = 0; for (String day : days) { if (!isWeekend(day)) { weekday++; } } return weekday; }
Ответы (1 шт):
Пусть в массиве всего N дней. День может быть либо выходным, либо рабочим. Соответственно, если в массиве M выходных дней, то рабочих дней в нём:
N - M
Значит, третий метод, считающий количество рабочих дней, можно переписать следующим образом:
public static int weekdayCount(String[] days) {
return days.length - weekendCount(days);
// N - M = количество рабочих дней
}
При этом метод, считающий количество выходных дней, можно немного упростить с использованием Stream API:
public static int weekendCount(String[] days) {
return (int) Arrays.stream(days)
.filter(Main::isWeekend)
.count();
}
// где Main - имя класса, в котором находится статический метод isWeekend. Имя класса может быть любым.