Страницы

Поиск по вопросам

пятница, 31 января 2020 г.

Пример из книги с применением оператора continue

#java


у меня вопрос, что за слово outer и откуда оно взялось:

public class Test {
    public static void main(String args[]) {
        outer:
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                if (j > i) {
                    System.out.println("");
                    continue outer;
                }
                System.out.print(" " + (i * j));
            }
        }
    }
}

    


Ответы

Ответ 1



Коротко: outer - это метка (label). И continue/break умеют на нее переходить. Зачем это нужно? дело в том, что в java как бы нет goto(на самом деле такое слово есть, но использовать его нельзя). Но goto, не смотря на то, что Дейкстра его заклеймил, иногда очень удобно. И в Java пошли на компромисс - расширили break/continue. Только логику чуточку поменяли - в большинстве языков break/continue переходят только на один уровень вложенности циклов, а в java - на сколько нужно. Ссылка на офф документацию. Там оно называется labeled and unlabeled break/coninue.

Ответ 2



Перед циклом for у вас стоит метка outer: (3-я строка в вашем коде). Оператор continue outer; делает переход на эту метку, то есть возвращает в начало первого цикла.

Ответ 3



outer (Внешний) - это название метки, которое может быть любым. Просто, тот кто писал эту метку хотел внести смысл в название, поэтому так и назвал. А смысл состоит в том, что эта метка означает место куда передается управление программы когда выполняется оператор continue. В данном случае она тут ненужная, как и оператор continue, кототорые можно удалить. Вместо этого можно использовать break без метки. public static void main(String args[]) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (j > i) { System.out.println(""); break; } System.out.print(" " + (i * j)); } } }

Комментариев нет:

Отправить комментарий