Вложенные циклы и пример из книги

189
23 января 2019, 18:30

Не понимаю почему выдает определенную информацию в консоли вот этот код:

public static void main(String args[]){
    for (int i = 1; i <= 3; i++) {
        System.out.println("Это первый цикл! Я выполняюсь " + i + " раз");
        for (int a = 1; a <= 10; a++) {
            System.out.println("    Это второй цикл! Я выполняюсь " + a + " раз");
            if (a == 2)
                break;
        }
    }
}

Вот что он выдает

   1. Это первый цикл! Я выполняюсь 1 раз
           2.     Это второй цикл! Я выполняюсь 1 раз
           3.    Это второй цикл! Я выполняюсь 2 раз
   4. Это первый цикл! Я выполняюсь 2 раз
           5.  Это второй цикл! Я выполняюсь 1 раз
           6. Это второй цикл! Я выполняюсь 2 раз
   7.    Это первый цикл! Я выполняюсь 3 раз
           8.     Это второй цикл! Я выполняюсь 1 раз
           9.    Это второй цикл! Я выполняюсь 2 раз

Вопрос почему на третьей строчке нам выдает:

Это второй цикл! Я выполняюсь 2 раз

Расписываю работу программы, как понял я: Первый кусок кода у нас i меньше 3 (true) выполняется первый sout("Это первый цикл! Я выполняюсь " + i + " раз");

for (int i = 1; i <= 3; i++) {
        System.out.println("Это первый цикл! Я выполняюсь " + i + " раз");

Всё окей

Дальше a меньше или ровно 10 (true) выполняется второй sout: Это второй цикл! Я выполняюсь " + a + " раз");

for (int a = 1; a <= 10; a++) {
                System.out.println("Это второй цикл! Я выполняюсь " + a + " раз");
         Это первый цикл! Я выполняюсь 1 раз
            Это второй цикл! Я выполняюсь 1 раз

Потом как я понял идет if

if (a == 2)
break;

Где условие false и оператор break не выполняется, значит мы возвращаемся в цикл и по новой. Вопрос почему я насчитал только такие выводы в консоль:

              Это первый цикл! Я выполняюсь 1 раз
              Это второй цикл! Я выполняюсь 1 раз

А программа выдает:

Это первый цикл! Я выполняюсь 1 раз
           Это второй цикл! Я выполняюсь 1 раз
           Это второй цикл! Я выполняюсь 2 раз (не понимаю, как он это в Sout вывел это)
и ...
Answer 1

В цикле по a в первый раз а=1 и это выводится.
Условие if (a == 2) не срабатывает - значит, цикл продолжается, a увеличивается.
В цикле по a на втором обороте а=2 и это выводится.
Условие if (a == 2) срабатывает, цикл по a прекращается.

Получается, что код эквивалентен этому:

 for (int a = 1; a <= 2; a++){
        System.out.println("    Это второй цикл! Я выполняюсь " + a + " раз");
    }
READ ALSO
Задание по Java, проблемы с Arrays

Задание по Java, проблемы с Arrays

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

221
Java приложение, разрешение имен при помощи /etc/hosts

Java приложение, разрешение имен при помощи /etc/hosts

Мне нужно изменить свой сервис так, чтобы IP-адреса были не захардкожены в нем, а использовались имена из /etc/hostsВот часть кода приложения:

152
драйвер для базы оракл?

драйвер для базы оракл?

Использовал mysql драйвер для соединения с базойdb

155