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

Задачи на switch

Java Multithreading
8 уровень , 2 лекция
Открыта

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

16
Задача
Java Multithreading, 8 уровень, 2 лекция
Недоступна
Осваиваем switch
Реализуй логику метода switchTest: 1. Не используй условные операторы. 2. Используй 1 switch, у которого 2 case и 1 default. 3. Ожидаемый вывод: Вывод для E1.A - "it's E1.A" Вывод для E1.B - "it's E1.B" Вывод для E1.C - "it's E1.C" Вывод для E1.Y - "it's E1.Y" Вывод для E2.D - "it's E2.D" Вывод для
Комментарии (49)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
SomeBody098 Уровень 51
10 августа 2024
жду лекции, состоящей из одной фразы - "— Привет, Амиго!"
Юрій Якимчук Уровень 33
12 марта 2024
Скажите спасибо, что тут хотябы джава 8, в 7 в свитч только инты можно было :D
Kirill Уровень 46
2 декабря 2024
Не неси ерунды. Поддержка String в операторе switch появилась как раз в JDK6. А enum с оператором switch поддерживался вообще еще с JDK5. Потому что компилятор при работе с enum неявно к меткам добавляет вызов метода ordinal(), приводя их к int.
Anemon Уровень 13 Expert
13 января 2025
А сейчас почему не работает?
Kirill Уровень 46
15 января 2025
Что не работает? switch c enum?
Anemon Уровень 13 Expert
16 января 2025
Ага, может я что-то не так сделал, но не сработало
Kirill Уровень 46
18 января 2025
Пример кода приведи. Так просто с потолка сложно что-то сказать.
Anemon Уровень 13 Expert
20 января 2025
Я и сам уже не помню что там было, в каком-то задании Раша не смог использовать enum, когда это было максимально уместно по моему мнению. Сейчас сам написал с нуля и всё заработало как надо, со старым свитчем. Так что уже не знаю какая была ситуация. Сорян, и спасибо за ответ.)
Viktoriya Уровень 43
7 марта 2024
С задача данного модуля завела практику перед их решением смотреть комментарии - помогает! Спасибо всем тем кто их оставляет!!!
Денис Уровень 51
8 апреля 2023
Я один выводил: Вывод для E1.A - "it's E1.A", и горел, с того, что вывод должен соответствовать условию?0))))0009076
SomeBody098 Уровень 51
10 августа 2024
XD
Anonymous #3062817 Уровень 47
2 сентября 2022
Валя не примет решение, если после default не стоит break, считаю его там излишним.
Виктор Уровень 1
2 октября 2022
Так и правильно сделает. Ведь если не поставить break, то будет неверный вывод:

it's E1.C
it's E1.C
undefined
undefined
it's E2.D
undefined
Anonymous #3062817 Уровень 47
3 октября 2022
Не знаю, может у тебя другой какой-то код, у меня такой вывод, если не ставить break после default

it's E1.C
undefined
it's E2.D
Как говорилось в лекции

Фактически, case – это метки в коде, и в switch 
мы прыгаем на очередную метку и… 
начинаем исполнять весь код до конца switch’а, или пока не встретим break.
default - такая же метка.
Виктор Уровень 1
3 октября 2022

default - такая же метка.
Ну так она и исполнилась
Anonymous #3062817 Уровень 47
3 октября 2022
А вот полный код который я предлагал валидатору (без 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

default - такая же метка.
И она не исполнится, если перед ней есть break
Виктор Уровень 1
3 октября 2022
а... прошу прощения, я как-то просмотрел, что имелся в виду break после default. Да, там в нем нет необходимости. и у меня валидатор принял такой вариант.
Anonymous #3062817 Уровень 47
3 октября 2022
)) Бывает
FutureDev Уровень 42
9 марта 2023
Без 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
Не вздумайте использовать enhanced switch, так как валидатор его не примет. Типа:

        switch () {
            case 1 -> System.out.println();
            case 2 -> System.out.println();
            default -> System.out.println();
Oleg Khilko Уровень 51
30 августа 2022
Кстати это странно, потому что тут говорят ставить 13 версию и выше (проверил).
Anemon Уровень 13 Expert
20 января 2025
Но фактически используется именно восьмая
hidden #2595317 Уровень 45
29 ноября 2021
Баба Валя

printf()
не принимает, засылайте

println()
с плюсами.
Druha Уровень 31
1 января 2023
у меня приняло с
 printf()
Александр Уровень 41
25 октября 2021
Решение придумал сразу, но долго вспоминал про getSimpleName().
Vladyslav Pelykh Уровень 41
5 сентября 2021
Одна задачи на switch...
Алексей Уровень 35
20 августа 2021
типа освоили switch)))