用java 随机1~9整数生成3*3的二维数组,使二维数组每行,每列、以及斜线上的数字之和均为15,并输出这个二维数组
时间: 2024-04-30 20:23:03 浏览: 70
```
import java.util.Random;
public class Main {
public static void main(String[] args) {
int[][] array = new int[3][3];
Random random = new Random();
int sum = 15;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
array[i][j] = random.nextInt(9) + 1; // 生成1~9的随机整数
}
}
// 验证每行的和是否为15
for (int i = 0; i < array.length; i++) {
int rowSum = 0;
for (int j = 0; j < array[i].length; j++) {
rowSum += array[i][j];
}
if (rowSum != sum) {
// 如果不为15,重新生成该行的数字
for (int j = 0; j < array[i].length; j++) {
array[i][j] = random.nextInt(9) + 1;
}
i--; // 重新验证该行
}
}
// 验证每列的和是否为15
for (int i = 0; i < array.length; i++) {
int colSum = 0;
for (int j = 0; j < array[i].length; j++) {
colSum += array[j][i];
}
if (colSum != sum) {
// 如果不为15,重新生成该列的数字
for (int j = 0; j < array[i].length; j++) {
array[j][i] = random.nextInt(9) + 1;
}
i--; // 重新验证该列
}
}
// 验证正对角线的和是否为15
int diagonalSum = 0;
for (int i = 0; i < array.length; i++) {
diagonalSum += array[i][i];
}
if (diagonalSum != sum) {
// 如果不为15,重新生成正对角线的数字
for (int i = 0; i < array.length; i++) {
array[i][i] = random.nextInt(9) + 1;
}
}
// 验证反对角线的和是否为15
diagonalSum = 0;
for (int i = 0; i < array.length; i++) {
diagonalSum += array[i][array.length - 1 - i];
}
if (diagonalSum != sum) {
// 如果不为15,重新生成反对角线的数字
for (int i = 0; i < array.length; i++) {
array[i][array.length - 1 - i] = random.nextInt(9) + 1;
}
}
// 输出二维数组
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
```
阅读全文