Найти тему

Крутой курс Java для "чайников". Урок 13.2. Разбор решений задач урока 13. Часть 2.

Задача 3.1.

Достаточно простая задача. Алгоритм определения чётности числа простой. Мы его уже разбирали. Если остаток от деления числа на 2 равен нулю, то число чётное, если не равен нулю - нечётное.

Давайте создадим целочисленную переменную и присвоим ей начальное значение.

int a = 5;

Для наглядности создадим переменную логического типа

boolean b;

Присвоим переменной b значение

b = (a % 2 == 0);

И принимаем к сведению, что если число, содержащееся в переменной a чётное, то остаток от деления его на 2 будет равен нулю, а значение переменной b будет true.

Выводим на экран текст, который был задан в условии задачи

System.out.println("Число " + a + " чётное - это " + b);

System.out.println("Число " + a + " нечётное - это " + !b);

Во второй строчке мы применили оператор ! Если число чётное, то b примет значение true. Если число нечётное, то надо заставить поменяться значению b на противоположное. Это мы и сделали с помощью оператора !

Всё. Задача решена. Полный код решения

Результат исполнения

-2

На всякий случай проверяем с заменой цифры 5 на 10. Файл Chetnost.java заново сохраняем. Затем повторно компилируем и запускаем программу

-3

Работает правильно.

Задача 3.2.

Идею как из четырёхзначного числа получить значения всех четырёх цифр я украду у себя из предыдущего урока. Повторяться и описывать её не буду. Возьму сразу код.

int a = 7890;

int a1;

int a2;

int a3;

int a4;

a1 = a / 1000 - (a % 1000) / 1000;

a %= 1000;

a2 = a / 100 - (a % 100) / 100;

a %= 100;

a3 = a / 10 - (a % 10) / 10;

a %= 10;

a4 = a;

Итак, у нас есть 4 переменных со значениями цифр - a1, a2, a3, a4 изначально заданного числа.

Для наглядности заведём переменную логического типа.

boolean b;

Смотрим условие задачи. Сумма цифр должна быть меньше или равна 15. Ну или не должна быть. Присваиваем переменной b значение логического выражения

b = ( (a1 + a2 + a3 + a4) <= 15);

Для большей наглядности для соблюдения приоритета операций (а это важно!), о которых мы поговорим в следующих уроках, с помощью скобок указываем, в каком порядке должны выполниться операторы сложения, сравнения и присвоения.

Выводим текст на экран

System.out.println("Сумма цифр числа " + a1 + a2 + a3 + a4 + " меньше или равна 15 - это " + b);

Всё. Сохраняем файл

-4

Компилируем и запускаем

-5

Ещё одна задача решена. Попробуйте самостоятельно подставить число 1234 и проверить результат.

Задача 4.1.

Задача достаточно простая. Давайте решать.

Для номера месяца создадим целочисленную переменную

int mes = 4;

Отдельных переменных под название времен года создавать не вижу смысла.

Воспользуемся оператором if

Давайте определимся с условиями, при которых можно отнести месяц к какому-то времени года.

Зима. Номер месяца должен быть 1, 2 или 12.

Весна. Номер месяца должен быть в интервале от 3 до 5 включительно.

Лето. Номер месяца должен быть в интервале от 6 до 8 включительно.

Осень. Номер месяца должен быть в интервале от 9 до 11 включительно.

Теперь предлагаю наши условия отобразить в виде кода

if ( (mes == 1) || (mes == 2) || (mes == 12) )

{

System.out.println("Время года месяца с номером " + mes + " - зима");

}

На что нужно обратить внимание в этом коде. Мы воспользовались оператором логическое ИЛИ ||. То есть если хотя бы одно из трёх условий сложного выражения будет верно, то выполнится тот код, который указан в фигурных скобках. Если все три выражения ложны, то код в фигурных скобках не выполнится. И второй момент. Мы заключили всё сложное выражение в скобки, чтобы компилятор нас понял правильно, ну и для наглядности.

Для весны можно также воспользоваться оператором ИЛИ, но мы для разнообразия воспользуемся оператором логическое И &&. Код для весны будет такой:

if ( (mes >= 3) && (mes <= 5) )

{

System.out.println("Время года месяца с номером " + mes + " - весна");

}

Здесь уже оба выражения в скобках должны быть истинными, чтобы выполнился код в фигурных скобках.

Теперь сделаем аналогично весне лето и осень.

if ( (mes >= 6) && (mes <= 8) )

{

System.out.println("Время года месяца с номером " + mes + " - лето");

}

if ( (mes >= 9) && (mes <= 11) )

{

System.out.println("Время года месяца с номером " + mes + " - осень");

}

Осталось сохранить

-6

Скомпилировать и запустить

-7

Для номера месяца 4 работает. Попробуйте самостоятельно поменять номер месяца и проверить, правильно ли программа выполнится.

Задача 4.2.

Эта задача совсем простенькая.

Пусть число будет целым. Объявляем переменную и задаём ей начальное значение.

int a = -10;

Для модуля числа объявим вторую переменную b и сразу присвоим ей значение переменной a. Дальше напишу зачем присваивать ей значение переменной a.

int b = a;

Дальше на выбор. Либо пользуемся тернарным оператором, либо оператором if.

Для варианта с тернарным оператором код следующий

b = (a > 0) ? a : -a;

Что сделает этот оператор? Если a > 0, то переменной b будет присвоено значение переменной a. Если выражение в скобках неверно, то переменной b будет присвоено значение -a. В нашем случае a = -10, т.е. выражение в скобках ложно, соответственно переменной b будет присвоено значение - (-10), то есть +10.

Для варианта с оператором if код будет таким

if (a < 0) b = -a;

Тут, думаю, вопросов не возникает.

И обещал написать, пишу. Если бы мы в начале кода не присвоили переменной b значение переменной a, то сейчас нам бы пришлось заморачиваться с else. Иначе в случае когда a больше или равно 0, у нас бы переменная b осталась без значения и компилятор выдал бы ошибку.

Дальше выводим на экран текст

System.out.println("Модуль числа " + a + " - это " + b);

Для случая когда a = 0 у нас тоже всё хорошо. Модуль нуля - ноль. Поэтому проблем с ним не возникнет.

Всё задача решена. Полный код решения

-8

или такой

-9

Результат выполнения в обоих случая одинаков и он такой

-10

Ссылка на предыдущий урок

Ссылка на следующий урок

Ссылка на содержание курса