break в Java выход из цикла

98
06 января 2022, 12:10
public class Puzzle4 {
public static void main(String[] args) {
    int x = 0;
    int y = 30;
    for (int outer = 0; outer < 3; outer++) {
        for (int inner = 4; inner > 1; inner--) {
            x = x + 0;
            y = y - 2;
            System.out.println(y);
            if (x == 6) {
                break;
            }
            x = x + 3;
        }
        y = y - 2;
    }
    System.out.println(x + " " + y);
}

Всем доброго времени! Данный код взят из книги Head First Java. При выполнении данного кода получается вывод в консоль в виде :"6 14". Если взять листик и ручку и выполнить этот код самому то получается ответ :"6 6". Я начал разбираться в чем же причина, и натолкнулся на то что цикл for со значением outer = 2; не запускается. Я изменил break в условии if на х=x-3 (тоесть сделал то же самое что и делал break не давая выполняться строке x=x+3), и получил результат:"6 6". Напрашивается вывод что из-за многократного выхода из цикла посредством оператора break, не запускается цикл. Простите возможно за глупый вопрос, если можно хотелось бы понять в чем причина такого поведения кода.

Answer 1

Кажется, ты их перепутал:

  • break завершает цикл целиком
  • continue завершает тело цикла, но продолжает сам цикл
Answer 2

Выкиньте x = x + 0; это всё равно ничего не даёт, только вносит неразбериху в ваш неокрепший ум. В таких случаях старайтесь искать проблему поэтапно,шаг за шагом. Нормальные люди это делают с помощью дебагера... предоставляю вам вариант курильщика.

 int x = 0;
    int y = 30;
    for (int outer = 0; outer < 3; outer++) {
        System.out.println("Цикл 1 работает " + outer + " / " + y);
        for (int inner = 4; inner > 1; inner--) {
            System.out.println("Цикл 2 работает " + outer + " / " + y);
            y = y - 2;
            System.out.println("Вычитание y = " + y);
            System.out.println("x==6 ? - " + (x==6));
            if (x == 6) {
                break;
            }
            x = x + 3;
            System.out.println("Сработал конец цикла 2");
        }
        y = y - 2;
        System.out.println("Сработал конец цикла 1");
    }
    System.out.println(x + " " + y);

-> Надеюсь это поможет вам понять как устроены вложенные циклы. Придумайте свои метки в выводе в консоль, которые смогут предоставить вам картину.

READ ALSO
Эффект появления/затухания в Java fx

Эффект появления/затухания в Java fx

Не могу разобраться, какой bind нужно прикручивать к элементам Java FX, чтобы получить эффект появления затухания, влияя на него из Task()

119
Одинаковая высота flex-item в независимых flex-container

Одинаковая высота flex-item в независимых flex-container

Имеется вот такая конструкция:

96
Меню открывается и закрывается

Меню открывается и закрывается

Пытаюсь сделать двохуровневое адаптивное менюВроде что-то получилось, но есть проблема, когда первый раз нажимать на пункт меню, то оно открывается...

154
Как выбор последний элемент

Как выбор последний элемент

Как выбрать последний элементНо если стоит class

244