public class TwoArray_04 {
public static void main(String[] args) {
int n = 5; //表示n行n列
int sum = 0; //两条对线的总和
int[][] array = getArray(n); // 获取一个奇数阶方阵
int diagonal1 = 0; // 对角线1之和
int diagonal2 = 0; // 对角线2之和
int j = array[0].length - 1; // 获取数组列下标的最大值
int k = 0;
int m = 0;
System.out.println("获得的数组如下:");
for (int x = 0; x < n; x++) { // 循环遍历输出array数组
for (int y = 0; y < n; y++) {
System.out.print(" " + array[x][y]);
}
System.out.println();
}
for (int i = 0; i < array.length; i++) { // 求两条对角线之和
diagonal1 += array[i][j--]; // 求第一条对角线之和
diagonal2 += array[k++][m++]; // 求第二条对角线之和
}
if (n % 2 == 1) { // 判断n是否为奇数
sum = diagonal1 + diagonal2 - array[n / 2][n / 2];// 是奇数则减去相交的值
} else {
sum = diagonal1 + diagonal2; // 不是则没有相交点,所以不必减去相交的值
}
System.out.println("\n两条对角线之和为:" + sum);
}
public static int[][] getArray(int n) { // 获取一个n*n的方阵
int[][] a = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = i * j + 1;
}
}
return a;
}
}