Имеется задание, в котором нужно проверить каждый массив на упорядоченность строго на убывание. Если он упорядочен - 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);
}
}
Обратите внимание, что у вас вложенный цикл.
При использовании внутри набора вложенных циклов оператор 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 следует использовать для прерывания цикла только тогда, когда возникают некоторые специальные ситуации.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
С клиента получаю архив в base64, перевожу в utf, сохраняю, но архив оказывается битымОшибка и код ниже
При нажатии кнопки в центре карты появляется метка, нужно, чтобы новые метки были соединены с последней добавленной и при этом их все можно...