运用Java 的二维数组打印“魔方阵”。所谓魔方阵是指这样的方阵:它的每行、每列和对角线之和均相等。要求打印1~25 由自然数构成的魔方阵。
时间: 2024-09-18 16:14:52 浏览: 19
在Java中,我们可以使用嵌套循环和条件判断来创建并打印出1到25的自然数组成的魔方矩阵。下面是一个简单的例子:
```java
public class MagicSquare {
public static void main(String[] args) {
int[][] magicMatrix = new int[3][3]; // 创建一个3x3的矩阵
int num = 1; // 当前数字
// 设置对角线元素
for (int i = 0; i < 3; i++) {
magicMatrix[i][i] = num++;
magicMatrix[i][2 - i] = num++; // 另一条对角线
}
// 检查剩余元素是否满足条件,如果是则填充
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (magicMatrix[i][j] == 0) { // 如果位置未填,则寻找合适的数
while (true) {
if (sumRow(i, magicMatrix) == sumColumn(j, magicMatrix)
&& sumDiagonal(i, j, magicMatrix) == sumDiagonal(1, 1, magicMatrix)) {
magicMatrix[i][j] = num;
break;
}
num++;
}
}
}
}
// 打印矩阵
for (int[] row : magicMatrix) {
for (int element : row) {
System.out.print(element + " ");
}
System.out.println();
}
}
// 计算行和列的和
private static int sumRow(int rowIndex, int[][] matrix) {
int sum = 0;
for (int col : matrix[rowIndex]) {
sum += col;
}
return sum;
}
private static int sumColumn(int columnIndex, int[][] matrix) {
int sum = 0;
for (int row : matrix) {
sum += row[columnIndex];
}
return sum;
}
// 计算对角线的和
private static int sumDiagonal(int startRow, int startCol, int[][] matrix) {
int sum = matrix[startRow][startCol];
int direction = 1; // 向右上方移动
while (startRow >= 0 && startCol < 3) {
sum += matrix[startRow][startCol];
startRow += direction;
startCol += direction * 2;
}
return sum;
}
}
```