#java #массивы
Имеется задание, в котором нужно проверить каждый массив на упорядоченность строго на убывание. Если он упорядочен - true. почему на matrix[0][1] , когда идет сравнение с matrix[0][2] - цикл не прекращает свое сравнение, а проверяет дальше следующие массивы {5, 4, 3}, {8, 7, 6}}. Хотя я специально обозначил, что в случае нарушения убывания значений элементов массива - пойдет break. public static void main(String[] args) throws Exception{ int[][] matrix = {{3, 2, 2}, {5, 4, 3}, {8, 7, 6}}; int bolshe; boolean isSortedDescendant = false; if (matrix.length == 0){ isSortedDescendant = true; } else { for (int i = 0; i < matrix.length; i++) { bolshe = matrix[i][0]; for (int j = 0; j < matrix[i].length-1; j++) { if (bolshe > matrix[i][j+1]) { bolshe = matrix[i][j+1]; isSortedDescendant = true; } else if (bolshe <= matrix[i][j+1]){ isSortedDescendant = false; break; } } } } System.out.println(isSortedDescendant); } }
Ответы
Ответ 1
Обратите внимание, что у вас вложенный цикл. При использовании внутри набора вложенных циклов оператор break будет выходить только из самого внутреннего цикла. Для решения данной задачи стоит воспользоваться метками break outer; public static void main(String[] args) throws Exception{ int[][] matrix = {{3, 2, 2}, {5, 4, 3}, {8, 7, 6}}; int bolshe; boolean isSortedDescendant = false; if (matrix.length == 0){ isSortedDescendant = true; } else { outer: // Ставим метку for (int i = 0; i < matrix.length; i++) { bolshe = matrix[i][0]; for (int j = 0; j < matrix[i].length-1; j++) { if (bolshe > matrix[i][j+1]) { bolshe = matrix[i][j+1]; isSortedDescendant = true; } else if (bolshe <= matrix[i][j+1]){ isSortedDescendant = false; break outer; // Переходим к метке } } } } System.out.println(isSortedDescendant); } Замечание: Break не проектировался в качестве нормального средства завершения цикла. Эту цель обслуживает условное выражение заголовка цикла. Оператор break следует использовать для прерывания цикла только тогда, когда возникают некоторые специальные ситуации.
Комментариев нет:
Отправить комментарий