Menu
Coddy logo textTech

Операторы меток

Часть раздела Логика и управление потоком путешествия по Java на Coddy — урок 35 из 59.

Операторы меток в Java позволяют отмечать конкретные точки в вашем коде и управлять потоком выполнения с помощью операторов break и continue с этими метками. Метки особенно полезны при работе с вложенными циклами.

Создайте вложенный цикл с меткой:

outer: for(int i = 0; i < 3; i++) {
   for(int j = 0; j < 3; j++) {
       if(i * j == 4) {
           break outer;
       }
   }
}

Используйте continue с меткой:

firstLoop: for(int i = 0; i < 3; i++) {
   for(int j = 0; j < 3; j++) {
       if(j == 1) {
           continue firstLoop;
       }
       System.out.println(i + "," + j);
   }
}
challenge icon

Задание

Легко

Создайте метод с именем findNumber, который принимает три аргумента:

  1. Двумерный массив целых чисел (grid)
  2. Целое число (target) для поиска
  3. Логическое значение (breakEarly), определяющее, должна ли остановиться после нахождения первого вхождения Метод должен использовать помеченный цикл для поиска целевого числа и вывода каждой позиции, где оно найдено. Если breakEarly равно true, он должен остановиться после нахождения первого вхождения. Каждый найденный элемент должен быть выведен в формате: Found at: rowIndex,colIndex

Шпаргалка

Метки в Java позволяют помечать конкретные точки в вашем коде и управлять потоком выполнения с помощью операторов break и continue с этими метками.

Создайте вложенный цикл с меткой:

outer: for(int i = 0; i < 3; i++) {
   for(int j = 0; j < 3; j++) {
       if(i * j == 4) {
           break outer;
       }
   }
}

Используйте continue с меткой:

firstLoop: for(int i = 0; i < 3; i++) {
   for(int j = 0; j < 3; j++) {
       if(j == 1) {
           continue firstLoop;
       }
       System.out.println(i + "," + j);
   }
}

Попробуйте сами

import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;

public class Main {
    public static void findNumber(int[][] grid, int target, boolean breakEarly) {
        // Напишите свой код здесь
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // Читаем JSON-строку, представляющую двумерный массив
        String gridString = scanner.nextLine();
        // Читаем целевое число
        int target = Integer.parseInt(scanner.nextLine());
        // Читаем флаг breakEarly
        boolean breakEarly = Boolean.parseBoolean(scanner.nextLine());
        
        Type gridType = new TypeToken<int[][]>(){}.getType();
        int[][] grid = new Gson().fromJson(gridString, gridType);
        
        findNumber(grid, target, breakEarly);
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком