Тип 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 isALessThenB (int a, int b)
{
    if (a < b)
        return true;
    else
        return false;
}
Данный метод проверяет, что число А меньше числа Б.

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

2
public boolean isALessThenB (int a, int b)
{
    boolean m = (a < b);
    if (m)
        return true;
    else
        return false;
}
3
public boolean isALessThenB (int a, int b)
{
    boolean m = (a < b);
    return m;
}
4
public boolean isALessThenB (int a, int b)
{
    return a < b;
}
6
Задача
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))

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

3
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Ярлыки и числа
Не все ярлыки одинаково полезны, но порой без них образуется хаос. Давайте решим задачу с раздачей ярлыков: пользователь вводит с клавиатуры целое число, а программа ему рассказывает, отрицательное это число или положительное (или нулевое), чётное или нечётное. Зачем нам это? Просто так, для тренировки. Мы же тут учимся, в конце концов!
3
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Описываем числа
Представим себе, что нам нужно разделить числа по каким-то признакам. Например, по чётности или по количеству разрядов. Представили? А теперь за дело: пишем программу, которая описывает введенное пользователем число (оно должно находиться в диапазоне от 1 до 999), указывая в строке вывода, чётное ли это число и сколько в нём цифр.
3
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Положительное число
В школе «Позитивчик» шкала оценки знаний не ограничена ни снизу, ни сверху. Это радует юные дарования (а вы бы не радовались, получив оценку 100500 за изложение?). Все оценки больше нуля считаются хорошими, меньше — плохими. На зачете ученики должны сдать три предмета. Нам нужно ввести три оценки с клавиатуры, и вывести количество позитивных оценок.
3
Задача
Java Syntax,  4 уровень,  7 лекция
Недоступна
Положительные и отрицательные числа
Анализ данных начинается с малого: мы должны понимать, какие данные нам важны и их нужно использовать, а какие нужно отбросить. Решим простую задачу на анализ данных. Введем с клавиатуры три целых числа, затем проанализируем их и выведем на экран количество положительных и отрицательных чисел в исходном наборе.
Комментарии (335)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Дмитрий Ильин5 уровень, Москва
16 января, 00:01
хоспади какой-же я тупой :(
Alena Sadlovsky8 уровень
6 января, 23:22
последняя задача просто ужасс....32 попытки было...
Ростислав10 уровень, Киев
8 января, 19:00
Задачи на этой странице ваще все изи ))
Alena Sadlovsky8 уровень
8 января, 22:19
кому как)Видно уже просто усталость..)
Дмитрий5 уровень, Москва
2 января, 09:58
Небольшое замечание: может быть вместо isALessThenB было бы корректней isALessThanB))
ShpendOS5 уровень
позавчера, 12:57
тут так то вопрос. а меньше чем б? а если ваш вариант то волучится неуверенность какаято) а меньше, тогда б?)))
Алексей7 уровень, Москва
24 декабря 2018, 13:59
String chet = "нечетное", dig = "однозначное"; if (number < 1 || number >999) System.exit(1); if (number % 2 == 0) chet = "четное"; if (number >= 10 && number < 100) dig = "двузначное"; if (number >= 100) dig = "трехзначное"; System.out.println(chet + " " + dig + " число"); В IDE всё работает, System.exit(1) завершает программу с кодом "1". Но проверка на валидаторе выдает ошибку. Но если System.exit заменить на return, то проходит. Подскажите, какой вариант предпочтительнее в реальном программировании и почему.
Руслан9 уровень, Москва
31 декабря 2018, 08:07
Предпочтительней вариант, который не закроет приложение, а обработает только данные из нужного диапазона, не обращая внимание на невалидные.
Andrei4 уровень
позавчера, 13:41
слоупок ньюз, прочти еще раз условие: "Если введенное число не попадает в диапазон 1 - 999, ничего не выводить на экран", т.е. не используй System.exit(1); а просто скобки пустые, остальное в else заверни
Дмитрий8 уровень
23 декабря 2018, 18:40
почему не работает эта строчка? требует условие (а%2)!=0.Остаток же не может быть отрицательным if(((a%2)>0) && a<0) System.out.println("отрицательное нечетное число");
Глеб14 уровень, Минск
9 января, 18:42
это условие никогда не будет TRUE если a < 0 то остаток от деления будет ВСЕГДА < 0 напиши (a%2)!=0 или (a%2)==-1
Дмитрий8 уровень
10 января, 13:43
математика говорит что остаток не может быть меньше нуля,мужчина
Глеб14 уровень, Минск
10 января, 18:17
да? а ты выведи на экран вот это: System.out.print((-3)%2);
Дмитрий8 уровень
10 января, 19:08
да знаю я что выведет на экран, поэтому и спрашиваю,какого болта в математике нет отрицательных остатков, а здесь есть
Артём10 уровень
13 ноября 2018, 15:52
Объясните, пожалуйста, почему: у выражения !(a && b) результат !a || !b , у выражения !(a || b) результат !a && !b ?
Parzival9 уровень
27 ноября 2018, 15:18
закон де Моргана
Bogdan Potapenko5 уровень
10 декабря 2018, 04:06
Для проверки можно построить таблицы истинности и сравнить результаты обеих операций
Blesska9 уровень
21 октября 2018, 23:15
Наконец-то нормальная тема, на которую не надо тратить весь вечерочек=)
Alexander Brilliantov7 уровень, Санкт-Петербург
23 октября 2018, 22:07
)))))))
Timur7 уровень, Москва
31 октября 2018, 14:46
Но задачи тут не очень простые (
Андрей8 уровень
8 октября 2018, 10:26
Тем, кто еще не сделал задание по проверки количества цифр числа и его четности - не смотреть! Мой вариант решения проверки на количество цифр числа и четности, если сделал ..внокодом - напишите пожалуйста как было бы лучше.
Андрей8 уровень
8 октября 2018, 10:28
Вместо parity(a) == false, можно использовать !parity(a) - так лучше...
Кирилл8 уровень
11 октября 2018, 11:32
Конструкция if-else-if выполняет проверку условий сверху вниз и выполняет только одно, первое должно быть приоритетнее следующего, поэтому такая запись на проверку разрядности будет выглядеть лаконичнее. В вашем случаем вместо System.out - соответствующие q.
Rissa8 уровень, Санкт-Петербург
18 октября 2018, 21:23
кроме того, мы число сначала считываем как string. А у него есть метод length(), который считает количество символов.
Сергей Аминов9 уровень, Москва
27 октября 2018, 01:45
Кирилл, респект, действительно в ява такое есть https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html пока же для верности либо return, либо break cтавил после каждого if, ну либо case switch использовал, где лезло. Эй, авторы курса,примите на заметку, в лекциях пробел
Евгений12 уровень, Минск
10 ноября 2018, 14:08
А я считал длину строки. ( length() )и уже от этого пошло однозначное, двухзначное -трехзначное.
21 декабря 2018, 00:32
А зачем столько геморроя?
Jurii9 уровень, Киев
22 декабря 2018, 20:44
А не проще проверять диапазон значений? if(a > 99 && a < 1000) - это трёхзначное число...
Павел Карасев14 уровень, Москва
31 декабря 2018, 17:04
Очень сложная реализация задания. А если задача будет чуть посложнее наверно в вашем коде будет ещё сложнее разбираться. Подумайте над логикой.
Радик19 уровень, Казань
22 сентября 2018, 20:37
Почему в лекции ничего не сказано об обычных операторах сравнения & и | ? Ведь && и || - это укороченные логические операции.
Rufat Khafizov7 уровень
1 октября 2018, 09:02
а разве & и && не одно и тоже? Как я понял & - это укороченная запись используемая в java, смысл её точно такой же как и &&.
Радик19 уровень, Казань
3 октября 2018, 10:21
Нет, Руфат. Хорошо об этом написано у Г. Шилдта "Руководство для начинающих". && вычисляет вторую часть выражения только тогда, когда первая часть истинна. & всегда вычисляет все части выражения. Если всегда использовать && вместо &, то может возникнуть ситуация, когда потребуется именно &. Например при проверках на 0.
Rufat Khafizov7 уровень
3 октября 2018, 13:31
а || по аналогии с &&?
Радик19 уровень, Казань
3 октября 2018, 13:36
Да.
Rufat Khafizov7 уровень
3 октября 2018, 14:31
спасибо, заказал себе эту книжку в бумажном варианте.
Радик19 уровень, Казань
3 октября 2018, 15:53
Рад помочь. В сети есть много в эл. виде. Для продолжающих есть этот же автор, "Java 8. Полное руководство", но до него у меня пока руки не дошли.
Hren123 Hren12346 уровень
1 сентября 2018, 18:27
/* Комментарий удален */
Роман19 уровень
19 сентября 2018, 17:34
https://javarush.ru/groups/posts/708-operator-delenija-po-modulju
Андрей5 уровень, Ростов-на-Дону
1 октября 2018, 15:14
5%2 будет не 5, а 3. внимательней почитайте про остаток при делении по модулю.
Андрей5 уровень, Ростов-на-Дону
1 октября 2018, 15:23
извиняюсь, ошибся, 5%2 = 1
Евгений24 уровень
1 октября 2018, 15:35
все верно. эт меня уже переглючило )