JavaRush/Курсы/Java Multithreading/Задачи на switch

Задачи на switch

Открыта

— Привет, Амиго!

16
Задача
Java Multithreading,  8 уровень,  2 лекция
Недоступна
Осваиваем switch
Осваиваем switch
Комментарии (50)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Real User
Уровень 40
23 июня, 16:59
Еще бы java 1 использовали, там же такое важное апи. За такой код, этих балванов которые задачу написали, в первый день бы выперли
SomeBody098веник в бане
10 августа 2024, 12:29
жду лекции, состоящей из одной фразы - "— Привет, Амиго!"
Юрій Якимчук
Уровень 33
12 марта 2024, 11:47
Скажите спасибо, что тут хотябы джава 8, в 7 в свитч только инты можно было :D
Kirill
Уровень 46
2 декабря 2024, 11:33
Не неси ерунды. Поддержка String в операторе switch появилась как раз в JDK6. А enum с оператором switch поддерживался вообще еще с JDK5. Потому что компилятор при работе с enum неявно к меткам добавляет вызов метода ordinal(), приводя их к int.
Anemon
Уровень 13
Expert
13 января 2025, 10:41
А сейчас почему не работает?
Kirill
Уровень 46
15 января 2025, 12:18
Что не работает? switch c enum?
Anemon
Уровень 13
Expert
16 января 2025, 22:56
Ага, может я что-то не так сделал, но не сработало
Kirill
Уровень 46
18 января 2025, 17:06
Пример кода приведи. Так просто с потолка сложно что-то сказать.
Anemon
Уровень 13
Expert
20 января 2025, 19:59
Я и сам уже не помню что там было, в каком-то задании Раша не смог использовать enum, когда это было максимально уместно по моему мнению. Сейчас сам написал с нуля и всё заработало как надо, со старым свитчем. Так что уже не знаю какая была ситуация. Сорян, и спасибо за ответ.)
Viktoriya
Уровень 43
7 марта 2024, 20:08
С задача данного модуля завела практику перед их решением смотреть комментарии - помогает! Спасибо всем тем кто их оставляет!!!
Денис
Уровень 51
8 апреля 2023, 12:14
Я один выводил: Вывод для E1.A - "it's E1.A", и горел, с того, что вывод должен соответствовать условию?0))))0009076
SomeBody098веник в бане
10 августа 2024, 12:37
XD
Anonymous #3062817
Уровень 47
2 сентября 2022, 14:09
Валя не примет решение, если после default не стоит break, считаю его там излишним.
Виктор
Уровень 1
2 октября 2022, 10:10
Так и правильно сделает. Ведь если не поставить break, то будет неверный вывод:
it's E1.C
it's E1.C
undefined
undefined
it's E2.D
undefined
Anonymous #3062817
Уровень 47
3 октября 2022, 07:19
Не знаю, может у тебя другой какой-то код, у меня такой вывод, если не ставить break после default
it's E1.C
undefined
it's E2.D
Как говорилось в лекции
Фактически, case – это метки в коде, и в switch
мы прыгаем на очередную метку и…
начинаем исполнять весь код до конца switch’а, или пока не встретим break.
default - такая же метка.
Виктор
Уровень 1
3 октября 2022, 09:20
default - такая же метка.
Ну так она и исполнилась
Anonymous #3062817
Уровень 47
3 октября 2022, 12:02
А вот полный код который я предлагал валидатору (без break ПОСЛЕ default)
package com.javarush.task.task28.task2801;

/*
Осваиваем switch
*/

public class Solution {
    public static enum E1 {A, B, C, Y}

    public static enum E2 {D, E, F}

    public static enum E3 {D, E, F}

    public static void main(String[] args) {
        Solution.switchTest(E1.C);
        Solution.switchTest(E3.D);
        Solution.switchTest(E2.D);
        /* output
        it's E1.C
        undefined
        it's E2.D
         */
    }

    public static void switchTest(Enum obj) {
        switch (obj.getClass().getSimpleName()) {
            case "E1":
            case "E2":
                System.out.println("it's " + obj.getClass().getSimpleName() + "." + obj);
                break;
            default: System.out.println("undefined");
        }
    }
}
И результат его работы
Anonymous #3062817
Уровень 47
3 октября 2022, 12:05
default - такая же метка.
И она не исполнится, если перед ней есть break
Виктор
Уровень 1
3 октября 2022, 12:31
а... прошу прощения, я как-то просмотрел, что имелся в виду break после default. Да, там в нем нет необходимости. и у меня валидатор принял такой вариант.
Anonymous #3062817
Уровень 47
3 октября 2022, 12:58
)) Бывает
FutureDevJava Student в Home Corporation ®
9 марта 2023, 15:25
Без break после default принимает. Здесь валидатору не понравилось
System.out.println("it's " + obj.getClass().getSimpleName() + "." + obj);
Он хочет:
System.out.println("it's " + obj.getClass().getSimpleName() + "." + obj.name());
Silendor
Уровень 29
5 февраля 2022, 04:54
Не вздумайте использовать enhanced switch, так как валидатор его не примет. Типа:
switch () {
    case 1 -> System.out.println();
    case 2 -> System.out.println();
    default -> System.out.println();
Oleg Khilko
Уровень 51
30 августа 2022, 08:07
Кстати это странно, потому что тут говорят ставить 13 версию и выше (проверил).
Anemon
Уровень 13
Expert
20 января 2025, 20:01
Но фактически используется именно восьмая
hidden #2595317
Уровень 45
29 ноября 2021, 11:23
Баба Валя
printf()
не принимает, засылайте
println()
с плюсами.
Druha
Уровень 31
1 января 2023, 10:23
у меня приняло с
printf()
Александр
Уровень 41
25 октября 2021, 15:55
Решение придумал сразу, но долго вспоминал про getSimpleName().
Vladyslav Pelykh
Уровень 41
5 сентября 2021, 17:28
Одна задачи на switch...