Для сокращения кода нужно из третьего метода nt weekdayCount вызвать второй weekendCount. Как это переделать, подскажите пожалуйста!

Рейтинг: -2Ответов: 1Опубликовано: 13.03.2023

Реализуй три метода:

  • 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;
     }
    

Ответы

▲ 0Принят

Пусть в массиве всего 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. Имя класса может быть любым.