Здравствуйте!
Есть три массива. В первом находится исходная матрица, во второй обнуляется верхняя часть, а в третьей нижняя часть. Но почему-то третий массив берет ссылку от второго массива и работает с ним, как это исправить?
import java.util.Arrays;
class Matrix {
private static int[][] array;
private static int[][] arrayUpper;
private static int[][] arrayLower;
public static void main(String args[]) {
array = fillMatrix(4,4);
System.out.println("\nОригинальная матрица:\n");
outputMatrix(array);
arrayUpper = Arrays.copyOf(array,array.length);
arrayLower = Arrays.copyOf(array,array.length);
zeroUpperDiagMatrix(arrayUpper);
System.out.println("\nОбнуляем все значения выше главной диагонали:\n");
outputMatrix(arrayUpper);
zeroLowerDiagMatrix(arrayLower);
System.out.println("\nОбнуляем все значения ниже главной диагонали:\n");
outputMatrix(arrayLower);
}
private static int[][] fillMatrix(int raws, int cols) {
int[][] array = new int[raws][cols];
for (int i = 0; i<array.length;i++) {
for (int j = 0; j<array[i].length;j++) {
array[i][j] = (int) (Math.random()*20+1);
}
}
return array;
}
private static void outputMatrix(int[][] array) {
for (int i = 0; i<array.length; i++) {
for (int j = 0; j<array[i].length; j++) {
System.out.print(array[i][j] + "\t");
}
System.out.println(" ");
}
}
private static void zeroUpperDiagMatrix(int[][] array) {
for (int i = 0; i<array.length; i++) {
for (int j = i; j<array[i].length; j++) {
array[i][j] = 0;
}
}
}
private static void zeroLowerDiagMatrix(int[][] array) {
for (int i = 0; i<array.length; i++) {
for (int j = 0; j<i; j++) {
array[i][j] = 0;
}
}
for (int i = 0; i<array.length; i++) {
for (int j = 0; j<array[i].length; j++) {
array[i][i] = 0;
}
}
}
}