Реализовать методы

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

boolean isWeekend(String dayName) - метод принимает строку и отвечает, является ли данная строка выходным днем. Выходным днем являются Sunday и Saturday.

  1. int weekendCount(String[] days) - метод принимает массив строк и возвращает количество выходных дней в этом массиве.

  2. int weekdayCount(String[] days) - метод принимает массив строк и возвращает количество будних дней в этом массиве.

     public static boolean isWeekend(String dayName) {
     if (dayName == "Monday") {
         return false;
     } else if (dayName == "Tuesday") {
         return false;
     } else if (dayName == "Wednesday") {
         return false;
     } else if (dayName == "Thursday") {
         return false;
     } else if (dayName == "Friday") {
         return false;
     } else if (dayName == "Saturday") {
         return true;
     } else return dayName == "Sunday";
     }
    
     public static int weekendCount(String[] days) {
    
     int weekend = 0;
     for (int i = 1; i < days.length; i++) {
         if (isWeekend(days[i])) {
             weekend++;
         }
    
     }
     return weekend;
    
    }
    
     public static int weekdayCount(String[] days) {
     int weekday =0;
     for (int i = 1 ; i < days.length; i++)
     {
         if (isWeekend(days[i])) {
             weekday++;
         }
     }
     return weekday;
     }
    

    Тест провален. Некорректная реализация метода weekendCount. В массиве было 3 выходных

Ответы

▲ 2Принят
  1. Достаточно проверить, равна ли входная строка "Sunday" или "Saturday" (без учёта регистра), ещё пять проверок для будних дней не обязательны.
  2. Нумерация индексов для массивов начинается с 0, а не с 1, нужно будет исправить циклы в методах weekendCount, weekdayCount, или вообще лучше использовать цикл foreach, чтобы не ошибаться в индексах.

Также можно передавать массивы в методы в виде vararg аргументов (с многоточием), тогда можно упростить вызовы таких методов.

public static boolean isWeekend(String dayName) {
    return "Saturday".equalsIgnoreCase(dayName) || "Sunday".equalsIgnoreCase(dayName );
}

public static int weekendCount(String ... days) {
    int weekend = 0;
    for (String day : days) {
        if (isWeekend(day)) {
            weekend++;
        }
    }
    return weekend;
}

Вариант с использованием Stream API:

public static int weekdayCount(String ... days) {
    return (int) Arrays.stream(days).filter(d -> !isWeekend(d)).count();
}