JavaRush /Курсы /Java Syntax Pro /Логические операции

Логические операции

Java Syntax Pro
3 уровень , 6 лекция
Открыта

1. Булева логика

В языке Java нельзя записать выражение 18 < age < 65 — оно будет синтаксически некорректным и программа не скомпилируется.

Зато можно записать его так:

            (18 < age) И (age < 65)
        

Разумеется, вместо слова И там будет другой логический оператор, и сейчас мы как раз поговорим о них подробнее.

В Java есть три логических оператора: AND (и), OR (или) и NOT (не).

Хорошая новость: используя скобки, можно построить логические выражения любой сложности.

Плохая новость: разработчики Java решили вместо слов and, or и not, использовать обозначения из языка C.

Внимание на экран:

Логический оператор Ожидание Реальность
И (∧) and &&
ИЛИ (∨) or ||
НЕ (¬) not !

Вот несколько примеров использования логических операторов в Java:

Выражение Расшифровка Пояснение
(0 < a) && (a < 100)
(0 < a) and (a < 100)
(0 < a) И (a < 100)
(!a) && (!b)
(not a) and (not b)
(НЕ a) И (НЕ b)
!(!a || !b)
not((not a) or (not b))
НЕ((НЕ a) ИЛИ (НЕ b))

3
Задача
Java Syntax Pro, 3 уровень, 6 лекция
Недоступна
Треугольник
Напишем программу, которая будет просчитывать возможность существования треугольника на основе длин его сторон. Для этого тебе нужно: 1. Ввести с клавиатуры три числа – длины сторон предполагаемого треугольника. 2. Определить возможность существования треугольника по сторонам. Результат вывести на э

2. Примеры использования операторов сравнения и булевых переменных

Там, где можно написать логическое выражение, можно написать и логическую переменную.

Например:

Код Пояснение
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("Вы можете работать");
Если значение age лежит между 18 и 65, на экран выводится текст «вы можете работать».
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("Вы можете работать");
Мы создали переменную isYoung и вынесли в нее первую часть выражения. Только заменили age >= 18 на age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("Вы можете работать");
Мы создали переменную isOld и вынесли в нее вторую часть выражения. При этом заменили age <= 65 на age > 65.

Эти три примера эквивалентны. Только во втором мы вынесли часть выражения из условия if в отдельную логическую переменную – isYoung. В третьем примере мы вынесли вторую часть выражения во вторую переменную — isOld.


3
Задача
Java Syntax Pro, 3 уровень, 6 лекция
Недоступна
Работать или не работать - вот в чем вопрос
Напишем программу, которая будет считывать с клавиатуры возраст. Если возраст от 20 до 60 (включительно), то выводить ничего не нужно, иначе - вывести фразу "можно не работать". Сделать это можно (и нужно!) с помощью только одного оператора if без else. Подсказка : используй логический оператор "||"

3. Логическая арифметика

Вкратце пройдемся по логическим операциям.

Оператор AND, он же И, он же &&, он же конъюнкция.

Выражение Результат
true && true
true
true && false
false
false && true
false
false && false
false

Другими словами, результат выражения равен true (истина) только если оба значения, которые участвуют в выражении, равны true (истина). В остальных случаях всегда false (ложь).

Оператор OR, он же ИЛИ, он же ||, он же дизъюнкция.

Выражение Результат
true || true
true
true || false
true
false || true
true
false || false
false

Другими словами, результат выражения равен true (истина) всегда, если хотя бы одно значение, участвующее в выражении, равно true (истина). Если оба равны false, то результат false.

Оператор NOT, он же НЕ, он же !, он же инверсия.

Выражение Результат
!true
false
!false
true

Меняет true на false и наоборот.

Полезные выражения:

Выражение Результат
m && !m
false
m || !m
true
!(a && b)
!a || !b
!(a || b)
!a && !b

3
Задача
Java Syntax Pro, 3 уровень, 6 лекция
Недоступна
Координатные четверти
Ввести с клавиатуры два целых числа, которые будут координатами точки (первое считанное число - это координата "x", а второе - координата "y"). Известно, что точка не лежит на координатных осях OX и OY. Вывести на экран номер координатной четверти, в которой находится данная точка. Подсказка: Принад

Комментарии (570)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Evgeny Rassadnikov Уровень 8
17 июня 2025
Чет слишком простая задача
Anonymous #3585174 Уровень 11
26 мая 2025
like
23 мая 2025
Scanner sc = new Scanner (System.in); int x = sc.nextInt(); int y = sc.nextInt(); if (x>0&&y>0){ System.out.println("1"); }else if (x<0&&y>0){ System.out.println("2"); }else if (x<0&&y<0){ System.out.println("3"); }else System.out.println("4");
23 мая 2025
Scanner sc = new Scanner (System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); boolean isTrinagle = a>=b+c||b>=a+c||c>=a+b; if (!isTrinagle){ System.out.println(TRIANGLE_EXISTS); }else System.out.println(TRIANGLE_NOT_EXISTS);
Random Уровень 6
15 мая 2025

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int a, b, c;
        a = input.nextInt();
        b = input.nextInt();
        c = input.nextInt();
        //длина одной стороны всегда меньше суммы длин двух других сторон:
        if ((a < b + c) && (b < a + c) && (c < a + b)) System.out.println(TRIANGLE_EXIST);
        else System.out.println(TRIANGLE_NOT_EXIST);
    }
Mikhailo Bohatov Уровень 6
13 мая 2025
всмысле !(а)&&(b)=!a||!b типо так ! влияет или почему && стало||
Neperdun Уровень 11
28 апреля 2025
Не понял зачем нужен ||, решил обмануть проверку package com.javarush.task.pro.task03.task0307; import java.util.Scanner; /* Работать или не работать - вот в чем вопрос */ public class Solution { public static void main(String[] args) { //напишите тут ваш код Scanner sc = new Scanner(System.in); int age = sc.nextInt(); boolean isAdult = (age <= 60) && (age >= 20); if (!isAdult || !isAdult) { System.out.println("можно не работать"); } } }
Пин Хаус Уровень 4
28 апреля 2025
Сколько бы я раз не прочитал про эту булевую логику про эти && || ! и т.п. т.д. не могу понять как они работают хоть убей... Подскажите видео какие-то или где что почитать чтобы понять как оно работает на деле.
Anonymous #3520496 Уровень 4
17 апреля 2025
как с клавиатуры ввести логический оператор или?
Виталя Уровень 4
23 апреля 2025
shift + \ кнопка деления на английской раскладке превращается в палочку, на русской переворачивается на другую сторону. Рекомендую использовать палочку деления что находится чуть выше кнопки Enter
THE SANDMAN Уровень 6
14 марта 2025
!(a && b) !a || !b !(a || b) !a && !b Помогите разобраться. Почему в полезных выражениях не ( а и b) получается результат не а или не b ? (ведь открывая скобки мы читаем не а и не b) не (а или b) получается результат не а и не b ? (ведь открывая скобки мы читаем не а или не b)
Вадим Уровень 6
18 марта 2025
Это называется закон де Моргана. Один из законов алгебры логики. Можете почитать про теорию множеств если интересно, ну или порисовать диаграммы Эйлера-Венна (в простонародии - круги Эйлера, так как наглядно будет понятнее).
Helena Korotkaya Уровень 3
8 апреля 2025
Если простым языком, то оператор в скобках меняется на противоположный, т.е. И меняется на ИЛИ, и наоборот.
Виктор Уровень 14
11 апреля 2025
Оператор && противоположность оператора ||. При использовании оператора && есть только один вариант когда выражение верно и три ваританта когда неверно, а при использовании оператора || наоборот, три варианта когда выражение верно и один когда неверно.