8. Истина/Ложь
Теория
Помимо чисел в переменных можно хранить и другую информацию. В данном блоке мы рассмотрим
логический тип данных boolean
.
В таких переменных может храниться только два значения: истина(true
) и ложь(false
)
boolean a = true;
boolean b = false;
System.out.println(a + " " + b);
На консоль будет выведено:
true false
В java
так же, как для численных переменных, определено преобразование к строке, поэтому
вывод таких переменных можно организовать через складывание переменных с пробелом в кавычках ...+" "+...
.
Логические переменные можно чистать с консоли:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean a = scanner.nextBoolean();
boolean b = !a; // отрицание истинности b
System.out.println(b);
}
}
Если мы введём true
, то получим false
, если false
, то получим true
.
!
- означает отрицание.
Помимо явного указания значения(true
/false
),
можно использовать логические выражения. Общи вид логического выражения:
boolean d = a *ло* b;
где ло - логический оператор. Логические операторы:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean a = scanner.nextBoolean();
boolean b = scanner.nextBoolean();
boolean c1 = a & b; // логическое и
boolean c2 = a | b; // логическое или
boolean c3 = a && b; // укороченное логическое и
boolean c4 = a || b; // укороченное логическое или
boolean c1 = a ^ b; // исключающее или
}
}
Логическая операция И истинна тогда и только тогда, когда истинны оба её аргумента, а логическая операция ИЛИ - если истинен хотя бы один из её аргументов.
Исключающее ИЛИ равно истине тогда и только тогда, когда истинен ровно один из аргументов.
Укороченное логическое «и» работает следующим образом: сначала проверяется первый аргумент,
если он равен false
, то результат логического «и» в любом случае будет равен false
. Поэтому
при первом аргументе, равным false
, укороченное «и» не проверяет второй аргумент, а выдаёт
сразу результат false
.
По схожей логике работает укороченное логическое «или». Только наоборот: при первом аргументе,
равном true
, второй аргумент не проверяется и автоматически возвращает true
.
Условия могут более сложными, например:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean a = scanner.nextBoolean();
boolean b = scanner.nextBoolean();
boolean c = scanner.nextBoolean();
boolean d = scanner.nextBoolean();
boolean r = (a || b) && c || d;
}
}
Логические операции группируются так же, как и арифметические.
Есть несколько базовых операций для составления условных выражений:
a > b
–a
большеb
a < b
–a
меньшеb
a >= b
–a
меньше или равноb
a <= b
–a
меньше или равноb
a == b
–a
равноb
Рассмотрим задачу: с клавиатуры вводится число a
, требуется вывести true
, если а < 5
и false
в
остальных случаях.
Т.к. boolean
имеет встроенное преобразование к строке, то удобно просто положить значение выражения
в переменную этого типа, а потом вывести эту переменную на экран.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
boolean b = a < 5;
System.out.println(b);
}
}
Операция проверки на равенство ==
и операции присваивания =
возвращают
логические значения.
В случае
условия результат будет типа boolean
, а в случае присваивания – значение, равное значению
переменной.
int a = 5;
int c = 7;
boolean b = (a==c); // в b лежит false
int d = (a=c); // в d лежит 7
У логических операторов тоже определён порядок действий. Наивысший приоритет имеют скобки, потом отрицание переменных
!a
, потом сравнения <
, >
, <=
, >=
, потом проверки на равенство/неравенство ==
, !=
.
Следующими в порядке понимжения приоритета идут одинарные логические И(&
), исключающее ИЛИ(^
), ИЛИ(|
),
затем укороченное И(&&
), затем укороченное ИЛИ(||
).
Задание
Во всех задачах нужно вывести true
, если высказывание истинно, и false
- если ложно.
- Даны два целых числа: , . Каждое из чисел и нечетное.
- Даны два целых числа: A, B. Хотя бы одно из чисел и чётное.
- Даны два целых числа: A, B. Ровно одно из чисел и положительное.
- Даны три целых числа: , , . Число находится между числами и .
- Дано целое положительное число. Данное число является четным двузначным.
- Среди трех данных целых чисел есть хотя бы одна пара совпадающих.
- Дано трехзначное число. Все цифры данного числа различны.