Синтаксис Java: основы языка и структура кода. Практические Задания
Ниже — шесть практических задач по Java для начинающих на темы раздела «Синтаксис Java. Основы и структура кода»: комментарии, литералы всех видов, объявление и вызов методов, приведение примитивных типов и ввод данных с помощью класса Scanner. Задания закрепляют теорию раздела; к каждому есть решение на Patreon, а к части — видеоразбор.
Однострочные и многострочные комментарии
Создать программу, в которой используются однострочные и многострочные комментарии.
Литералы всех видов
Создать программу, в которой вывести на консоль литералы следующих видов:
- логический;
- строковый;
- символьный;
- целочисленный 2-й (двоичный);
- целочисленный 8-й (восьмеричный);
- целочисленный 10-й (десятичный);
- целочисленный 16-й (шестнадцатеричный);
- литерал типа
float; - литерал типа
double.
Подсказка
Двоичный литерал записывается с префиксом 0b (например, 0b1010), шестнадцатеричный — с 0x, восьмеричный — с ведущего нуля. В длинных числах разряды можно разделять подчёркиванием: 1_000_000 — компилятор его игнорирует, а читать легче.
Смотрите решение задачи в видео.
Калькулятор на методах
- Создать метод, принимающий на вход две переменные типа
int. - Метод вычисляет их сумму и возвращает значение.
- Вызвать этот метод из метода
main. - Сделать методы для вычисления разницы, произведения и деления.
Смотрите решение задачи в видео.
Таблица приведения типов
Составьте таблицу преобразований примитивных типов: в строках — исходный тип, в столбцах — тип, к которому приводим.
| из \ в | byte | short | char | int | long | float | double | boolean |
|---|---|---|---|---|---|---|---|---|
| byte | ||||||||
| short | ||||||||
| char | ||||||||
| int | ||||||||
| long | ||||||||
| float | ||||||||
| double | ||||||||
| boolean |
На пересечении напишите:
- ня (неявное) — если преобразование происходит автоматически;
- я (явное) — если нужно использовать явное преобразование;
- х — если преобразование невозможно;
- т — если преобразование тождественно.
На чём чаще всего ошибаются
Две строки таблицы особенно коварны. Во-первых, boolean не участвует ни в каких преобразованиях — вся его строка и весь столбец (кроме тождественного) заполняются как «невозможно». Во-вторых, short и char занимают по 16 бит, но друг к другу приводятся только явно: short знаковый, а char — беззнаковый, диапазоны не вкладываются один в другой.
Практика приведения типов
Создать программу, в которой последовательно прописать преобразования всех совместимых примитивных типов друг к другу. Преобразование для каждого типа вынесите в отдельный метод.
Сумма чисел через Scanner
Создать программу, которая будет вычислять и выводить на экран сумму двух целых чисел, введённых пользователем с помощью класса Scanner. Если пользователь некорректно введёт хотя бы одно из чисел, то сообщать об ошибке.
Подсказка
Корректность ввода удобно проверять до чтения: метод scanner.hasNextInt() сообщает, является ли следующий токен целым числом. Тогда nextInt() вызывается только для валидного ввода, и перехватывать InputMismatchException не придётся.
Проверь свой код
При написании программ обращайте внимание на рекомендации по оформлению кода.
Часто задаваемые вопросы
Какие виды литералов есть в Java?
Шесть групп: целочисленные (в десятичной, двоичной 0b1010, восьмеричной 012 и шестнадцатеричной 0xA записи), вещественные (double по умолчанию, float с суффиксом f), логические true/false, символьные в одинарных кавычках, строковые в двойных кавычках и литерал null.
Чем неявное приведение типов отличается от явного?
Неявное (расширяющее) преобразование компилятор выполняет сам, когда значение гарантированно помещается в целевой тип: int → long, int → double. Явное (сужающее) требует оператора приведения (byte) x и может потерять данные: старшие биты отбрасываются, дробная часть усекается.
Можно ли привести boolean к int в Java?
Нет. В отличие от C/C++, boolean в Java не участвует ни в каких числовых преобразованиях — ни неявных, ни через явный cast. Если нужно получить 1 или 0, используйте тернарную операцию: flag ? 1 : 0.
Почему метод деления в калькуляторе возвращает целое число?
Потому что деление двух int в Java — целочисленное: 7 / 2 даёт 3, дробная часть отбрасывается. Чтобы получить 3.5, приведите хотя бы один операнд к double: (double) a / b — и объявите возвращаемый тип метода как double.
Что произойдёт, если ввести в Scanner не число?
Вызов nextInt() выбросит InputMismatchException, и программа аварийно завершится, если исключение не обработать. Безопаснее сначала проверить ввод методом hasNextInt() и только при true читать число — иначе вывести сообщение об ошибке.
Комментарии