Управляющие структуры
(продолжение)
Для работы с логическими величинами в Java предусмотрены следующие операторы:
запись семантика количество операндов пример
&& И 2 a&&b
|| ИЛИ 2 a||b
^ ИСКЛЮЧАЮЩЕЕ ИЛИ 2 a^b
! ОТРИЦАНИЕ(НЕ) 1 !a
== РАВНО 2 a==b
!= НЕ РАВНО 2 a!=b
Если вы не знакомы с алгеброй логики, то семантика этих операторов должна
стать ясной из следующей таблицы:
a b a&&b a||b a^b !a a==b a!=b
true true true true false false true false
true false false true true false false true
false true false true true true false true
false false false false false true true false
Мы уже знаем что ход выполнения программы может контролироваться составными
операторами if и while. Рассмотрим еще один оператор - for. Синтаксис
оператора for очень прост: for (простой_оператор1;условие;простой_оператор2)
оператор;
или соответственно for (простой_оператор1;условие;простой_оператор2) {блок},
который
эквивалентен коду
простой_оператор1;
while (условие) {
оператор;
простой_оператор2;
}
или соответственно
простой_оператор1;
while (условие) {
блок
простой_оператор2;
}
Такая атавистическая (все таки Java частично произошел от C) семантика
оператора for может запутать человека знакомого с языками программирования
высокого уровня отличными от C, такими как Pascal, Modula-2, Fortran и т.п.
Поэтому на первых порах при организации циклов for нужно тщательно следить
за параметрами последнего.
Напишем с помощью оператора for программу разложения числа на простые
множители.
Expand.java
public class Expand {
public static void main(String args[]) {
int num = 1925, i;
for (i = 2; i <= (num+1)/2; i++) {
while ((num % i) == 0) {
num /= i;
System.out.println (i+" ");
}
}
if (num != 1) {
System.out.println (num);
}
}
}
Если вы были внимательны, то наверно обратили внимание, что в последних
примерах я использую необъявленный класс System. Дело в том, что JVM
подразумевает автоматическое включение пакета java.lang.