Тип boolean

Открыта

— Привет, Амиго. Хочу рассказать тебе о новом типе данных. Это тип boolean. Переменные этого типа могут принимать всего два значения – true (истина/правда) и false (ложь).

— А как его использовать?

— Этот тип неявно используется во многих местах. Так же, как и результат любого сложения – число, то и результат любого сравнения – истина или ложь – тип boolean. Примеры:

Код Пояснение
1
boolean m;
Два данных выражения эквивалентны. Значение переменой типа boolean по умолчанию false («ложь»).
2
boolean m = false;
3
if (a > b)
    System.out.println(a);
 В переменную m будет записан результат сравнения – true или false. Условие выполняется, если переданное в него выражение истинно – true.
4
boolean m = (a > b);
if (m)
    System.out.println(a);
5
boolean m = (a > b);
if (m == true)
    System.out.println(a);
Не нужно сравнивать логическую переменную (типа boolean) c true или false. Результат сравнения сам будет иметь тип boolean, и в точности будет совпадать со значением сравниваемой переменой: true == true – истина. Результат выражения – true. true == false – ложь. Результат сравнения – false.
6
boolean m = (a > b);
if (m)
    System.out.println(a);

— Еще примеры:

Код Пояснение
1
public boolean isALessThanB (int a, int b)
{
    if (a < b)
        return true;
    else
        return false;
}
Данный метод проверяет, что число А меньше числа Б.

Показаны четыре эквивалентных записи сравнения. Внизу самая компактная и корректная. Всегда старайся использовать компактную запись.

2
public boolean isALessThanB (int a, int b)
{
    boolean m = (a < b);
    if (m)
        return true;
    else
        return false;
}
3
public boolean isALessThanB (int a, int b)
{
    boolean m = (a < b);
    return m;
}
4
public boolean isALessThanB (int a, int b)
{
    return a < b;
}
2
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Набираем код Ӏ Java Syntax: 4 уровень, 7 лекция
Java Syntax: 4 уровень, 7 лекция. Иногда думать не надо, строчить надо! Как ни парадоксально звучит, порой пальцы «запоминают» лучше, чем сознание. Вот почему во время обучения в секретном центре JavaRush вы иногда встречаете задания на набор кода. Набирая код, вы привыкаете к синтаксису и зарабатываете немного материи. А ещё — боретесь с ленью.

— А что мне делать, если я хочу записать, выражение 0<a<b?

— Ну, выражений, которые включают три оператора, в Java нет, поэтому тут нужно воспользоваться такой конструкцией: (0<a) И (a<b)

— Так и писать И?

— Подожди, сейчас все объясню. В Java есть три логических оператора: AND (и), OR (или) и NOT (не). С помощью них можно строить условия различной сложности. Эти операторы можно применять только к выражению, имеющему тип boolean. Т.е. (a+1) AND (3) написать нельзя, а (a>1)AND (a<3) – можно.

— Оператор NOT – унарный – его действие распространяется только на выражение справа от него. Он больше похож на знак «минус» перед отрицательным числом, чем на знак умножить

— С переменными типа boolean (логический тип) можно выполнять различные операции.

— А какие?

— Вот сейчас мы их и рассмотрим:

Логический oператор Обозначение в Java Выражение Результат
AND (и) && true && true true
true && false false
false && true false
false && false false
OR (или) || true || true true
true || false true
false || true true
false || false false
NOT(не) ! ! true false
! false true
Распространённые комбинации и выражения m && !m false
m || !m true
! (a && b) !a || !b
! (a || b) !a && !b

— А можно побольше примеров?

— Конечно:

Запись в Java Логическая запись Пояснение
(a<3) && (a>0) (a < 3) AND (a>0) a<3 и a>0
(a>10) || (a<100) (a>10) OR (a<100) a>10 или a<100
(a<b) && (!(c<=d)) (a<b) AND (NOT (c<=d)) a<b и (не (c<=d))

— Реши пока немного задачек.

4
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Ярлыки и числа
Не все ярлыки одинаково полезны, но порой без них образуется хаос. Давайте решим задачу с раздачей ярлыков: пользователь вводит с клавиатуры целое число, а программа ему рассказывает, отрицательное это число или положительное (или нулевое), чётное или нечётное. Зачем нам это? Просто так, для тренировки. Мы же тут учимся, в конце концов!
8
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Описываем числа
Представим себе, что нам нужно разделить числа по каким-то признакам. Например, по чётности или по количеству разрядов. Представили? А теперь за дело: пишем программу, которая описывает введенное пользователем число (оно должно находиться в диапазоне от 1 до 999), указывая в строке вывода, чётное ли это число и сколько в нём цифр.
4
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Положительное число
В школе «Позитивчик» шкала оценки знаний не ограничена ни снизу, ни сверху. Это радует юные дарования (а вы бы не радовались, получив оценку 100500 за изложение?). Все оценки больше нуля считаются хорошими, меньше — плохими. На зачете ученики должны сдать три предмета. Нам нужно ввести три оценки с клавиатуры, и вывести количество позитивных оценок.
4
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Положительные и отрицательные числа
Анализ данных начинается с малого: мы должны понимать, какие данные нам важны и их нужно использовать, а какие нужно отбросить. Решим простую задачу на анализ данных. Введем с клавиатуры три целых числа, затем проанализируем их и выведем на экран количество положительных и отрицательных чисел в исходном наборе.
Комментарии (555)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Alex 5 уровень, Санкт-Петербург
суббота, 13:42
Влияет ли оператор NOT(!) на знак больше или меньше ? например, !(a>0) будет ли эквивалентно a < 0 ?
Aleksey T.16 уровень, Минск
воскресенье, 10:48
Пример (!a < !b) в корне не правильный! Так как ! & | , они работают с типом boolean, который принимает либо true, либо false.А переменные у тебя просто принимают значение int. Они должны быть оба логические, например (a>0)&&(b>0). Тогда к ним можно применять !
Alex 5 уровень, Санкт-Петербург
воскресенье, 13:42
а в исправленной версии правильно получается?
Alex 5 уровень, Санкт-Петербург
понедельник, 11:52
Спасибо!
Maxim Belich8 уровень, Минск
понедельник, 14:37
ты на 15 уровне пользуешься сканером))0)) гг вп тебе когда тема инпутстримридеров будет
Aleksey T.16 уровень, Минск
понедельник, 15:48
НУ да) конечно всегда пользуюсь) там пару лекций было про сканер, остальное BufferedReader) Я прочитал какие глаза большие у людей от BufferedReader и не стал их пугатЬ)
Maria4 уровень, Utrecht
21 мая, 19:42
предпоследнюю задачу со счетчиком очень удобно делать
Pavel Dyakov5 уровень, Санкт-Петербург
18 мая, 18:12
Для уменьшения кода лучше используйте boolean,создаем три переменные с условиями (первая: a>1&&a<10, вторая: a>=10&&a<100 третья: a>=100&&a<1000), правда условный оператор всё равно будет нужен . Подходит идеально. Если всё делать с помощью условного оператора if - кода становится больше)
Сергей8 уровень, Санкт-Петербург
15 мая, 12:05
Пробовал и кавычками и без .Валидацию не проходит.??????? 😪
Сергей6 уровень, Санкт-Петербург
14 мая, 22:15
заемучали своим вводом я пальцы стер об буфферед ридер. Сохранил в текстовый файл конструкцию: import java.io.BufferedReader; import java.io.Reader; import java.io.InputStreamReader; BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); String a = bufferedReader.readLine(); int num1 = Integer.parseInt(a);
Dmitry Aleksandrovich5 уровень, Санкт-Петербург
17 мая, 12:07
Чтобы поберечь пальцы, можно и так записывать
BufferedReader a = new BufferedReader(new InputStreamReader(System.in));
int x = Integer.parseInt(a.readLine());
на одну строку меньше печать ;)
Мария Домнина5 уровень, Санкт-Петербург
17 мая, 14:15
Давно уже копирую и вставляю считывание из прошлых решений в Идее)
Илья Чумак8 уровень, Москва
18 мая, 17:46
можно так: Scanner scanner = new Scanner(System.in); int a = Integer.parseInt(scanner.nextLine()); и импортировать только сканнер нужно
Антон4 уровень, Санкт-Петербург
20 мая, 18:58
Scanner sc = new Scanner(System.in); int a = sc.nextInt();
Maria4 уровень, Utrecht
21 мая, 19:54
В некоторых компаниях на собеседованиях дают только текстовый редактор и все, никакой айдии. Так что навык печатания на автомате без подсказок пригодится, anyway))
Dmitry Boyko6 уровень, Москва
суббота, 09:53
import java.io.Reader; У меня без этой строки все работает, объясните, зачем подключать Reader? Нам нужны только BufferedReader и InputStreamReader же.
Vlad12 уровень
12 мая, 15:07
Решил все задачи без boolean 😑
Oleg Oleg8 уровень, Варшава
15 мая, 18:56
😮Как?
Vlad12 уровень
16 мая, 08:15
с if - else if все решилось)
Oleg Oleg8 уровень, Варшава
16 мая, 09:00
А как использовать if - else, не используя boolean?
Vlad12 уровень
16 мая, 13:43
С if например if (a > b) System.out.println(a + " is bigger than " + b) else System.out.println(b + " is bigger than " + a) По сути тоже самое, только с boolean это более аристократический метод, а мой неандертальский)
Oleg Oleg8 уровень, Варшава
16 мая, 13:54
Так результат выражения a < b как раз boolean. Так что, без него не обойтись)
Vlad12 уровень
16 мая, 14:08
Ну так то оно так, просто без слов boolean в решении)
Bledkharm Marple7 уровень, Одесса
12 мая, 09:13
Caused by: java.lang.ClassNotFoundException: com.javarush.task.task04.task0427.Solution at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 3 more кто знает в чем проблема?
Мария Мухина6 уровень, Санкт-Петербург
10 мая, 17:28
Привет! При запуске задачи "Описываем числа" здесь, на сайте, Возникла ошибка с кодом: UNKNOWN_ERROR В IntellijIdea программа скомпилировалась и отработала верно. Кто-ниубдь сталкивался с такой проблемой?
Мария Мухина6 уровень, Санкт-Петербург
10 мая, 18:11
использовала System.exit(0)
Мария Мухина6 уровень, Санкт-Петербург
10 мая, 18:13
Затем использовала такую конструкцию if ((a < 1) || (a > 999)) System.out.println(); А потом уже все остальные проверки В этом случае пишет, что не учтены условия < 1 и >999 Почему?
Bledkharm Marple7 уровень, Одесса
11 мая, 20:02
Можешь скинуть статью где об этом читала, такая же проблема?
Мария Мухина6 уровень, Санкт-Петербург
12 мая, 20:23
Скинула в личку
Мария Мухина6 уровень, Санкт-Петербург
13 мая, 03:43
Решила
Алексей Хохлов5 уровень, Балашиха
15 мая, 18:27
Нужно было написать: if (number >= 1 && number <= 999) { остальные условия } System.out.println() - эту команду писать не нужно, лишнее.
Миша8 уровень, Сранопипирск
8 мая, 06:00
Я правильно понимаю что под это условие подходит любое число? (a>10) || (a<100)
Vitaly Efimov5 уровень, Москва
9 мая, 23:24
Да, будет true при любых числах
Антон5 уровень, Москва
4 мая, 17:43
Понимаю, как решить эти задачи через if-else, но категорически не понимаю, как это сделать на основании теории, даваемой в лекции(( Копирование примеров, приведенных в лекции, выдает ошибку: Если объявить переменные a и b и скопировать далее из примера код: boolean m = (a > b); if (m) System.out.println(a); , то выдаст ошибку: "Проверьте фигурные скобки. Часть кода написана вне метода\конструктора или блока static". Если взять пример: boolean m = true; System.out.println(m), то выдаст ошибку: "Отсутствует идентификатор или переменная". В интернете тоже ничего внятного по этой теме не нашел( Кто успешно решил задачи, используя материал лекции или внешние ресурсы про boolean - подскажите, в чем ошибка, почему даже коды из примеров не работают? Через if-else и логические операторы решить задачи проблем нету.
6 мая, 20:25
boolean m = (a > b); if (m==true) System.out.println(a);
Evgeny Sumarokov7 уровень, Москва
13 мая, 09:10
Необязательно делать условие (m==true). Достаточно оставить (m). Лекция как раз об этом - об упрощении и оптимизации кода.