#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 следует использовать для прерывания цикла только тогда, когда возникают некоторые специальные ситуации.
Комментариев нет:
Отправить комментарий