Создание нового двумерного массива
Нужна помощь с решением задачи. Надо заменить исходный массив новым, в котором удалён столбец содержащий только отрицательные значения, если таких столбцов несколько, то удалить только последний столбец, если требуемого столбца нет, то вывести исходный массив. Я написала код для нахождения первоначального массива, но как задать соответствующие условия не представляю.
public class Lalala {
public static void main(String[] args) {
int m = 4, n=5;
int numb;
boolean in_array = true;
int[][] arr = new int[m][n];
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++) {
do {
in_array = false;
numb = (int) (Math.random() * 199) -99;
for (int k = 0; k < i; k++) {
if ((int) arr[k][j] == (int) numb) {
in_array = true;
break;
}
}
} while(in_array);
arr[i][j] = numb;
System.out.printf("%5d",numb);
}
System.out.println( );
}
}
}
Ответы (1 шт):
Как написал @Эникейщик в комментарии, следует проверять каждый столбец, начиная с последнего, что элементы во всех его строках -- отрицательные числа.
Результатом проверки должен стать некий R-ый индекс подходящего столбца, если столбец не будет обнаружен, этот индекс окажется равным -1, так как итерации будут происходить от n - 1-го столбца до 0-го по убыванию. Как только столбец будет обнаружен (обозначим его R), можно будет досрочно выйти из внешнего цикла.
При наличии кандидата на удаление, можно либо создать новый массив на n - 1 столбец, в который следует скопировать нужные данные первоначальной матрицы, пропуская значения в R-м столбце. Либо можно, начиная от R-го столбца, сдвинуть все строки на 1 элемент влево, и после сдвига уменьшить размер каждой строки на 1 при помощи Arrays.copyOf.