Тип 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;
}
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 лекция
Недоступна
Положительные и отрицательные числа
Анализ данных начинается с малого: мы должны понимать, какие данные нам важны и их нужно использовать, а какие нужно отбросить. Решим простую задачу на анализ данных. Введем с клавиатуры три целых числа, затем проанализируем их и выведем на экран количество положительных и отрицательных чисел в исходном наборе.
Комментарии (286)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Денис4 уровень
вчера, 19:42
решил последнюю с каунтом, получилось всего 17 строк. если a больше нуля, то x++ если a меньше нуля, то y++ в конце выводим на экран х и y
Sergey7 уровень
пятница, 05:53
+ 1 шаг к цели "Стать Java-программистом"
PePTo5 уровень, Алматы
среда, 12:11
Последняя задачка... ад... без знаний массивов циклов ... код превращается в 150 строк)) If else if)))
Игорь6 уровень, Москва
четверг, 10:37
68 строк получилось. Решал исключительно через if, else if
Александр5 уровень
четверг, 11:06
А зачем еще 55 строк??? У меня решение задачи вылилось в чистых 13 строк, используя исключительно if. Полное количество строк с теми, что изначально присутствовали в задаче - 25. При этом ни на одной строке не было более одной команды, лишь счетчики чисел я позволил себе объявить одной строкой.
ildwine10 уровень
четверг, 15:46
20 строк всего, моего кода 7 строчек. В цикле ввод числа, проверка и наращивание одного или второго счетчика. После вывод (2 строчки).
ildwine10 уровень
четверг, 15:50
Ввод числа я всегда в одну строку делаю: a = Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
Alexey Hehnev5 уровень, Санкт-Петербург
11 марта, 18:22
Я все решил через if .
PePTo5 уровень, Алматы
четверг, 03:30
Я тоже )) потом переделал через массив и for , код сократился до 30 строк)), при количество цифр для проверки ограничено только INT
Александр5 уровень
четверг, 11:12
Хммм... Зачем? Через if получается чистых 13 строк....25 строк с теми, что изначально присутствовали в задаче.
11 марта, 16:52
Решил предпоследнюю задачу через ArrayList(согласен что не проходили, но потом будет проще) BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));//эта строка понятна //создаем ArrayList //создаем цикл где крутимся количество раз сколько цифр нужно ввести //считываем число //если число положительное то добавляем в ArrayList //конец цикла Выводим на экран количество помещенных обЬектов. Я согласен что мы этого не проходили, и так может и не стоит на данном этапе. Но когда больше знаешь решение приходит само собой. Стоит выделить немного времени и разобраться в ArrayList.
Дмитрий Метельский8 уровень, Минск
2 марта, 14:57
Кто решит 3ю задачу - решит и 4ю) удачи в поисках) Маленькая подсказка-лучше всего через count
Yulia Gorshkova5 уровень, Санкт-Петербург
6 марта, 16:58
я решила тупейшим, но простейшим способом, на основе только тех знаний, которые уже получила на этом курсе. Без "каунта".
Илья 5 уровень, Москва
8 марта, 23:06
count в данном случае не более чем имя переменной для счетчика
Антон9 уровень, Санкт-Петербург
18 февраля, 23:30
День добрый! Не понимаю почему при попытке скомпилировать, например, такой код: .... boolean x; System.out.print(x) .... Компилятор выдаёт ошибку /MyClass.java:4: error: variable x might not have been initialized ? Хотя выше сказано, что записи boolean x; и boolean x = false; идентичны. И везде в документации ясно говорится, что дефолтное значение у boolean - false, т.е. , как я понимаю, автоматом происходит инициализация и присваивается значение false.
Елизавета11 уровень, Нижний Новгород
14 февраля, 11:59
Добрый день. Можно ли как-то проверить рациональность кода? Мне кажется, что мой код слишком большой. И я не не про конкретную задачу.
Алексей9 уровень, Москва
21 февраля, 20:59
У меня такой же вопрос. В задаче "Положительные и отрицательные числа" у меня 58 строк, я использовал if и логические операторы. Если есть способы эту задачу быстрей решить, скиньте ссылку на материал для чтения плиз
Dmitriy Komar7 уровень, Минск
22 февраля, 10:44
побуй подсчет чисел через инремент.
Minority9 уровень, Москва
27 февраля, 08:48
Думаю, по началу у всех такие мысли возникают, но со временем будешь находить более эффективные методы решения задач, так как в твоем арсенале будет больше инструментов. Практика в этом случае лучшее решение.
Евгений6 уровень, Харьков
позавчера, 20:44
Тоже иногда возникает такой вопрос. Например, в случаях, когда за неимением должного опыта/идей/интеллекта дохожу до того. что начинаю сравнивать логические операторы,и всё это выражение сравнивать с другим таким же выражением, и получается подобный рабочий,но малочитабельный код, хотя наверняка люди могут предложить вариант раза в 3 короче: (a>0 && b<=0 && c<=0)||(b>0 && a<=0 && c<=0)||(c>0 && b<=0 && a<=0
5 февраля, 15:00
Привет. Мне кажется в первом задании опечатка. Просьба Одминам пофиксить , чтоб наши пальчики запоминали правильно! Мелочь, название метода это не так важно, но все-таки. А если открывающая скобка метода будет на той же строке ,что и метод, то будет совсем уж красота!))) Спасибо!
Alex40 уровень
5 февраля, 16:16
Спасибо. Исправлено!
Женя5 уровень, Москва
28 января, 16:09
Объясните пожалуйста вот эту строчку
if (a>0&&a%2==0) System.out.println("положительное четное число");
Вообще не могу понять, деление по модулю я посмотрел, понял, но что значит вот это a%2==0, вообще никак не доходит
Дима Чикин5 уровень
29 января, 16:30
если( "а" больше 0 и остаток деления от деления числа "а" на 2 равен 0), то выводим данную строчку. Остаток от деления - 12/10=1,2 ( "2" - наш остаток от деления). % - остаток от деления числа, проще говоря, то же самое деления, только выводит число после запятой. Если где-то не прав - поправите)
Александр7 уровень
30 января, 16:01
Поправим ) Даёте неправильное определение остатка. Остаток - это не число после запятой. Пример: 12/5 = 2,4 Число после запятой - 4 , а остаток здесь 2. Можете проверить через 12%5. Чтобы получить остаток, нужно дробную часть 0,4 умножить на делитель 5. Остаток -- 2. В вашем случае 0,2 умножить на 10. Остаток -- 2. Просто в вашем случае остаток и число после запятой совпали.
Александр7 уровень
30 января, 16:07
Операция %, она же -- "деление по модулю", она же -- "нахождение остатка", помогает решать задачи типа "на первый, второй, третий рассчитайсь!". Можно с помощью одной операции сразу выяснить, первым, вторым или третьим будет, например, 10ый человек в шеренге. Считаем 10 % 3 = 1. Значит, будет первым. То есть 1й человек в шеренге идёт в 1ю группу, 2й - во вторую, 3й - в 3ю, 4й - снова в 1ю, 5й - во 2ю, 6й - в 3ю, 7ой - снова в 1ю, ... , 10й - снова в 1ю.
Дима Чикин5 уровень
30 января, 16:40
Точно, извиняюсь за ложную инфу, про остаток от деления все верно у комментатора выше, спасибо)
Женя5 уровень, Москва
30 января, 19:10
Спасибо, благодаря вашему примеру понял, но что значит буква a, в этих скобках (a>0&&a%2==0)
Михаил Зиневич6 уровень, Москва
31 января, 15:36
Это переменная заявленная ранее, например: int a = 5; if (a > 0 && a%2 ==0)
Женя5 уровень, Москва
31 января, 15:45
Ааа, вот теперь все понял
Minority9 уровень, Москва
27 февраля, 08:41
Может кому проще, как в школе учили делить столбиком и находить остаток: