Операторы меток
Часть раздела Логика и управление потоком путешествия по 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);
}
}Задание
ЛегкоСоздайте метод с именем findNumber, который принимает три аргумента:
- Двумерный массив целых чисел (
grid) - Целое число (
target) для поиска - Логическое значение (
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);
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиПовторение - 2D-массивыСложение и вычитание матрицРваные массивы3D-массивы и вышеРаспространённые паттерны 2D-массивовПовторение - всё о массивах2HashMap Часть 1
Что такое HashMap?Объявление HashMapДоступ к значениямПроверка существования ключаИзменение словарейИтоги - HashMap3HashMap. Часть 2
Методы HashMapИтерация с keySet()Итерация с entrySet()Вложенный HashMapПовторение - Управление складомПовторение - Операции HashMap6Продвинутое управление потоком
Операторы метокВыражение switchСопоставление шаблоновОхранные клаузыИтоги - управление потоком9Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка слов