Работа с Enum (перечисления)

Тренажер по Java для пользователей с начальным уровнем подготовки.

Тренажер по Java

В Java Enum (перечисление) — это специальный тип данных, который позволяет переменной быть набором предопределенных констант. Это делает код более читаемым и защищенным от ошибок по сравнению с использованием обычных чисел или строк.

Типичные примеры использования: дни недели, цвета, статусы заказа (NEW, PROCESSING, DONE). Перечисления объявляются с помощью ключевого слова enum.

В отличие от простых списков, Enum в Java — это полноценные классы. Они могут иметь поля, конструкторы и методы. Основные встроенные методы:

  • values() — возвращает массив всех констант перечисления.
  • valueOf("NAME") — возвращает константу по имени.
  • ordinal() — возвращает порядковый номер константы (начиная с 0).

Изучение и тренировка работы с Enum позволит вам писать строгий и понятный код. Используйте этот тренажер, чтобы закрепить синтаксис и методы.

Список тем

1. Объявление Enum

id: 40527_enum_01_syntax

В данном задании представлен фрагмент кода, в котором объявляется перечисление (enum) для сезонов года. В коде есть несколько пропусков, обозначенных как input1, input2 и т.д. Вам необходимо выбрать из выпадающего списка подходящие элементы, чтобы получить корректный синтаксис объявления enum в Java. Обратите внимание на ключевое слово для объявления перечисления и правильный формат записи констант.

Нужно правильно расставить в пропуски предложенные варианты
public input1S Season {
    input2S,
    input3S,
    input4S,
    input5S
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Обращение к константе

id: 40527_enum_02_access

В этом задании вы отработаете обращение к константам перечисления (enum) в Java. В коде объявлено перечисление Day, представляющее дни недели. В методе main необходимо присвоить переменной today конкретное значение из этого перечисления, чтобы программа вывела ожидаемое приветствие. Заполните пропуск корректным обращением к константе, не меняя остальную структуру кода.

Заполните пропуски
public class Main {
    enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
    public static void main(String[] args) {
        Day today = Day.input1S;
        System.out.println("Сегодня " + today);
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Enum в switch-case

id: 40527_enum_03_switch

Из предложенных строк соберите корректный фрагмент Java-кода, демонстрирующий использование конструкции switch-case для проверки значения enum-переменной типа Priority. Код должен объявить переменную со значением LOW и вывести соответствующее сообщение в консоль. Некоторые строки являются лишними и не должны входить в решение.

Перетяните в правильном порядке строки из одного блока в другой
Priority level = Priority.LOW;
switch (level) {
    case LOW:
        System.out.println("Низкий приоритет");
        break;
}
    case Priority.LOW:
        continue;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Метод ordinal()

id: 40527_enum_04_methods_predict

Проанализируйте приведённый фрагмент кода на Java, в котором используется перечисление (enum) и вызывается метод ordinal() для одной из его констант. Определите, какое целое число будет выведено на экран в результате выполнения программы. Выберите правильный вариант ответа из предложенных.

Выберите правильный вариант ответа
enum Direction { NORTH, EAST, SOUTH, WEST }

public class Main {
    public static void main(String[] args) {
        Direction dir = Direction.EAST;
        System.out.println(dir.ordinal());
    }
}
Сообщения
Проверить
Показать подсказку

5. Методы Enum

id: 40527_enum_05_methods_match

В левой колонке перечислены названия методов класса Enum в Java. В правой колонке приведены их краткие описания. Сопоставьте каждый метод с его описанием. Обратите внимание, что в правой колонке нет лишних вариантов, но порядок перемешан.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
values()
valueOf()
name()
ordinal()
Возвращает массив всех элементов перечисления
Возвращает порядковый номер (индекс) элемента
Ищет элемент перечисления по имени (строке)
Возвращает имя элемента в виде строки
Сообщения
Проверить
Показать подсказку

6. Синтаксис полей Enum

id: 40527_enum_06_error_semicolon

В данном фрагменте кода объявлен перечисляемый тип (enum) Planet, который содержит константы планет с параметрами массы и радиуса. Однако в коде допущена синтаксическая ошибка, из-за которой компиляция невозможна. Найдите и исправьте ошибку, чтобы код мог быть скомпилирован.

Найдите ошибку и исправьте
public enum Planet {
    MERCURY(3.303e+23, 2.4397e6),
    VENUS(4.869e+24, 6.0518e6),
    EARTH(5.976e+24, 6.37814e6),
    MARS(6.421e+23, 3.3972e6),
    JUPITER(1.9e+27, 7.1492e7),
    SATURN(5.688e+26, 6.0268e7),
    URANUS(8.686e+25, 2.5559e7),
    NEPTUNE(1.024e+26, 2.4746e7)
 
    private final double mass;
    private final double radius;
 
    Planet(double mass, double radius) {
        this.mass = mass;
        this.radius = radius;
    }
 
    public double getMass() {
        return mass;
    }
 
    public double getRadius() {
        return radius;
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Перебор значений

id: 40527_enum_07_loop

Перед вами фрагмент кода на языке Java, демонстрирующий перебор значений перечисления (enum) с помощью цикла for-each. Внимательно изучите код. Ваша задача — отметить (кликнуть) два элемента: вызов метода, который возвращает массив всех констант перечисления, и переменную, которая используется в цикле для последовательного получения каждого значения. Не отмечайте другие части кода, такие как ключевые слова, фигурные скобки или операторы вывода.

Кликните по всем фрагментам, которые подходят под условие задания.
public class Main {
    enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

    public static void main(String[] args) {
        for ({{Day~|~t1}} {{day~|~t2}} : Day.{{values()~|~t3}}) {
            System.out.println(day);
        }
    }
}
Сообщения
Проверить
Показать подсказку

8. Структура Enum

id: 40527_enum_08_constructor

Разметьте части кода Enum, указав для каждого выделенного фрагмента, является ли он константой, полем класса или конструктором. Обратите внимание, что константы перечисления объявляются в начале, поля класса — это переменные внутри Enum, а конструктор используется для инициализации констант.

Кликните по каждому выделенному фрагменту и выберите для него подходящий тип из списка под текстом.
public enum DayOfWeek {
    {{MONDAY~|~t1}}("Понедельник"),
    {{TUESDAY~|~t2}}("Вторник"),
    {{WEDNESDAY~|~t3}}("Среда"),
    {{THURSDAY~|~t4}}("Четверг"),
    {{FRIDAY~|~t5}}("Пятница"),
    {{SATURDAY~|~t6}}("Суббота"),
    {{SUNDAY~|~t7}}("Воскресенье");

    private final {{dayName~|~t8}};

    {{DayOfWeek~|~t9}}(String dayName) {
        this.dayName = dayName;
    }

    public String getDayName() {
        return dayName;
    }
}
Константа
Конструктор
Поле класса
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру