Главная » Уроки по Java с нуля » JAVA: Циклы For, While, Do while, и операторы в них

JAVA: Циклы For, While, Do while, и операторы в них

JAVA: Циклы For, While, Do while, и операторы в них
Уроки по Java с нуля
21:16, 29 январь 2024
14
0

Для начала давайте разберёмся, что такое цикл в программировании, и зачем он нужен. Цикл в программировании — это управляющая конструкция, которая заставляет какой-то блок кода выполняться несколько раз.

Блок кода, который нужно повторять, называется телом цикла. Там может быть практически любой код, необходимый разработчику. Сама управляющая конструкция описывает, как долго повторять действия: можно задать четкое количество повторений или заставить цикл выполняться до достижения какого-то условия.

Сколько раз пройдет цикл, зависит от его условий и задачи. Бывают циклы, которые не могут выполниться ни разу, а бывают те, что проходят сотни итераций, вплоть до бесконечности. Иногда это ошибка, иногда — ожидаемое поведение.

И так, давайте начнем с цикла for. Для того чтобы его записать, необходимо прописать for(), где в круглых скобках указать условие.

В качестве действия, для примера мы возьмём переменную int, дадим ей имя i, и присвоим ей значение = 0. Мы не будем эту переменную объявлять отдельно, хотя могли бы, а мы ее пропишем прямо в условии цикла for. Действие объявлено, следом мы пропишем, до каких пор будет выполняться цикл, пусть это будет i <= 10; а в третьем действии мы прописываем каким образом наша переменная будет изменяться, ибо если этого не сделать, то цикл будет бесконечным. Мы пропишем, чтобы наша переменная увеличивалась на единицу i++.

public class cycle {
    public static void main(String[] args) {
        for(int i = 0; i <= 10; i++) {
            System.out.println("Element: " +i);
        }
    }
}

Понятно, что значение переменной может быть не обязательно 0, а любым другим числом. До каких пор будет выполняться цикл тоже можно указывать <<=>>= и так далее. И каким образом будет изменяться переменная тоже можно менять, увеличить на единицу ++, уменьшить на единицу --, уменьшать на -=, увеличивать на +=, делить /= и так далее.

for(int i = 100; i > 15; i /=2)

То есть, если, например, прописать вот так, и запустить программу, то в результате мы получим цикл 100, 50 и 25.

Цикл while() от цикла for() отличается лишь тем, что у них разный формат записи условий. На примере показываю те же данные, что и в цикле for, но смотрите как изменилась запись.

public class cycle {
    public static void main(String[] args) {
        int i = 0;
        while (i <= 10) {
            System.out.println("Element: " +i);
            i++;
        }
    }
}

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

Цикл do while такой же цикл как и while, но отличается как раз тем, о чём я писал выше. Если в цикле while в круглых скобках условие = true, то цикл выполняется, и останавливается тогда когда условие = false.

В цикле do while, в do код выполнится в любом случае, а в while, если условие false, то код выполняться не будет, если true, то будет.

public class cycle {
    public static void main(String[] args) {
        int i = 100;
        do {
            System.out.println("Element: " +i);
            i *= 100;
        }
        while (i < 10);
    }
}

Как мы видим на примере выше, я переменной int присвоил значение 100, а в качестве действия в do попросил переменную умножить еще на 100. Таким образом, при запуске программы мы увидим только Element 100, а умножения не произойдет, потому что в while прописано условие, которое будет равно false.

public class cycle {
    public static void main(String[] args) {
        int i = 0;
        do {
            System.out.println("Element: " +i);
            i++;
        }
        while (i < 10);
    }
}

Однако, если мы код запишем вот таким образом, то есть переменной int присвоим значение = 0, и do увеличит ее на 1, то while будет повторять код до тех пор, пока переменная не станет больше 10. Остановится на 9. Если бы знак был не < а <= то вывод остановился бы на 10.

Давайте рассмотрим другой пример.

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.println("Введи число 5");
    int value = scan.nextInt();
    while (value!=5) {
        System.out.println("Ты тупой? Введи число 5");
        value = scan.nextInt();
    }
    System.out.println("Вы ввели число 5");
}

Я прошу пользователя ввести число 5 в переменную int с именем value. В условии цикла while я прописал проверку на неравенство. Таким образом, если пользователь введет число 5, которое будет равно 5, тогда в условии будет ложь, код не сработает, и на экран будет выведен следующий код, в котором будет написано "Вы ввели число 5". Однако, если пользователь введет любое число, которое не равно 5, то в условии while будет истина, и сработает код который прописан в этом цикле.

Проблема в том, что 6-7 и 9-10 строки дублируют программный код. Чтобы решить эту проблему потребуется цикл do while.

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int value;
    do {
        System.out.println("Введи число 5");
        value = scan.nextInt();
    }
    System.out.println("Вы ввели число 5");
}

Теперь, если пользователь вводит число не равное 5, то цикл while не сработает, и вернет код в цикле do. Так будет происходить до тех пор, пока пользователь не введет число 5.

Теперь давайте поговорим об операторах. В данном случае мы поговорим об операторах break и continue, которые встречаются в циклах. Оператор break останавливает цикл, тогда как оператор continue пропускает итерацию.

public class cycle {
    public static void main(String[] args) {
        for(int i = 5; i < 25; i += 2) {
            if (i >= 17)
                break;
            System.out.println("Element: " i);
        }
    }
}

В данном примере я создал цикл for, в котором объявил переменную int с именем i и присвоил ей значение 5. Цикл будет повторяться, прибавляя 2 к переменной int до тех пор, пока не будет достигнута цифра 25. Но я прервал цикл оператором if (i >= 17) break; то есть, цикл прекратится сразу, как только цикл будет достигнут числа 17.

public class cycle {
    public static void main(String[] args) {
        for (int i = 0; i < 25; i += 2) {
            if (i % 3 == 0)
                continue;
            System.out.println("Element: " i);
        }
    }
}

А в этом примере мы пропустили итерацию кратную числу 3, прописав условие i % 3 == 0, что означает если остаток при делении на число 3 = 0, то оно кратно 3, ну и остальные числа, которые делятся на 3 без остатка, выводиться не будут.

Операторы continue и break можно использовать в любом из циклов, которые были описаны в этой статье.

Ctrl
Enter
Заметили ошЫбку
Выделите текст и нажмите Ctrl+Enter
Вернуться назад
Комментарии (0)
Кликните на изображение чтобы обновить код, если он неразборчив