Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не проходит тест в java

Андрей STALSE Знаток (264), на голосовании 1 год назад
 public static String checkWeekend(String weekday) {
String day = "Saturday, Sunday";
return (day.contains(weekday)) ? "Ура, выходной!" : "Надо еще поработать!";

}

Некорректная реализация метода checkWeekend.

В чем проблема подскажите?
Голосование за лучший ответ
Sergio 2.1 Оракул (67303) 1 год назад
Проблема с методом checkWeekend заключается в том, что он использует метод contains для проверки, является ли день выходным или нет. Однако метод contains проверяет, содержит ли строка указанную последовательность символов, а не является ли строка равной указанной строке. Это может привести к неправильным результатам, например, если в качестве аргумента передать строку "day", то метод вернет "Ура, выходной!", хотя это неправильно.

Чтобы исправить эту проблему, можно использовать другой подход для проверки дня недели. Например, можно создать массив или список с выходными днями и использовать метод contains у этого массива или списка для проверки, является ли день выходным или нет. Вот пример исправленного метода:
 public static String checkWeekend(String weekday) { 
List weekends = Arrays.asList("Saturday", "Sunday");
return (weekends.contains(weekday)) ? "Ура, выходной!" : "Надо еще поработать!";
}
Зеленая бяка Просветленный (41308) 1 год назад
Чат gtp конечно молодец, и верно ответил, но кроме того, что он написал еще должна быть проверка на некорректные входные данные, т.е. в его случае если передать тот же day, то он вернет, что надо еще поработать. Тут напрашивается в использовании switch:
 switch (value) { 
case "Saturday", "Sunday" -> return "Ура, выходной!";
case "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" -> return "Надо еще поработать!";
default -> return "Неизвестное значение: " + value;
}
Похожие вопросы