Повторить цикл for
Хочу чтоб цикл for повторился , но проверил 2 столбец матрицы, за счет value++;, и при проверке столбца выдало "упорядочен" или нет, столбец по убыванию. И как найти максимум в упорядоченном столбце(не верхний элемент(что логично), а чтоб код искал максимум при условии, что столбец упорядочен по убыванию P.S. это 1 столбец.
public static void main(String[] args) {
int value = 0;
int sum = 0;
int[][] mass = {{3,2,1},{2,2,3},{1,2,1},{0,3,1}};
/*mass[0][0] = 3;
mass[0][1] = 2;
mass[0][2] = 1;
mass[1][0] = 1;
mass[1][1] = 2;
mass[1][2] = 3;
**/
for (int i=0;i< mass.length;i++){
for (int j=0;j< mass[i].length;j++){
System.out.print(mass[i][j]+" ");
}
System.out.println();
}
job:
for (int i = 0; i < 3; i++){
if(mass[i][value] <= mass[i+1][value]){//проверка убывания
System.out.println("Столбец1 не упорядочен");
value++;
continue job;}
else{
sum++;//чтоб не повторялось по 3 раза , что он упорядочен
if (sum == 3){
System.out.println("Столбец упорядочен");
value++;
continue job;
}
value++;
continue job;
}
}
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Объясняете задачу вы , мягко говоря, непонятно. Посему вот вам методы длл получения по номеру колонки 2-мерного массива максимального и минимального значения, а также проверки на порядок по возрастанию и убыванию. 2 написаны циклами ,а 2 стримами.
public static boolean isDescending(int[][] mass, int columnNumb) {
int tmp = Integer.MIN_VALUE;
for (int[] mas : mass) {
if (tmp > mas[columnNumb]) return false;
else tmp = mas[columnNumb];
}
return true;
}
public static boolean isAscending(int[][] mass, int columnNumb) {
int tmp = Integer.MAX_VALUE;
for (int[] mas : mass) {
if (tmp < mas[columnNumb]) return false;
else tmp = mas[columnNumb];
}
return true;
}
public static int maxValueByColumn(int[][] mass, int columnNumb) {
return valueByColumn(mass, columnNumb).max().getAsInt();
}
public static int minValueByColumn(int[][] mass, int columnNumb) {
return valueByColumn(mass, columnNumb).min().getAsInt();
}
private static IntStream valueByColumn(int[][] mass, int columnNumb) {
return IntStream.rangeClosed(0, mass.length - 1).map(i -> mass[i][columnNumb]);
}