利用随机1~9整数生成3*3的二维数组,用java实现
时间: 2023-05-31 19:07:05 浏览: 81
```java
import java.util.Random;
public class RandomArray {
public static void main(String[] args) {
int[][] array = new int[3][3]; // 创建3*3的二维数组
Random random = new Random(); // 创建随机数生成器
// 遍历二维数组,赋值随机数
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的随机整数
}
}
// 打印二维数组
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(); // 换行
}
}
}
```
相关问题
利用随机1~9整数生成3*3的二维数组,使二维数组每行,每列、以及斜线上的数字之和均为15,并输出这个二维数组,用java实现
代码如下:
```java
import java.util.Arrays;
import java.util.Random;
public class MagicSquare {
public static void main(String[] args) {
int[][] magicSquare = generateMagicSquare();
for (int[] row : magicSquare) {
System.out.println(Arrays.toString(row));
}
}
public static int[][] generateMagicSquare() {
int[][] magicSquare = new int[3][3];
Random random = new Random();
// 先随机生成第一行,保证它的和为15
for (int i = 0; i < 3; i++) {
magicSquare[0][i] = random.nextInt(9) + 1;
}
while (magicSquare[0][0] + magicSquare[0][1] + magicSquare[0][2] != 15) {
magicSquare[0][random.nextInt(3)] = random.nextInt(9) + 1;
}
// 根据第一行推导出第二行和第三行
magicSquare[1][0] = 15 - magicSquare[0][0] - magicSquare[0][2];
magicSquare[1][1] = random.nextInt(9) + 1;
while (magicSquare[0][1] + magicSquare[1][1] + magicSquare[2][1] != 15) {
magicSquare[1][1] = random.nextInt(9) + 1;
}
magicSquare[1][2] = 15 - magicSquare[0][2] - magicSquare[1][1];
magicSquare[2][0] = 15 - magicSquare[0][1] - magicSquare[1][0];
magicSquare[2][1] = 15 - magicSquare[1][1] - magicSquare[0][1];
magicSquare[2][2] = 15 - magicSquare[0][0] - magicSquare[1][1];
return magicSquare;
}
}
```
解释一下代码实现:
首先,我们定义了一个 `generateMagicSquare` 方法,返回一个 3x3 的二维数组,用来生成魔方阵。
我们利用 `Random` 类生成随机整数来填充第一行。为了保证第一行的和为 15,我们用一个 while 循环不断调整第一行的数字,直到它们的和为 15。
接下来,我们根据第一行推导出第二行和第三行。具体来说,我们根据魔方阵的性质,第二行的中间数字一定为第一行两端数字的补数。然后我们随机生成第二行中间数字,同样用一个 while 循环不断调整它,直到第二行的第二个数字与第一列和第三列的数字之和为 15。最后,我们根据第二行推导出第三行。
最后,我们在 `main` 方法中调用 `generateMagicSquare` 方法,得到生成的魔方阵,然后遍历输出每一行。
用java利用随机1~9整数生成3*3的二维数组,使二维数组每行,每列、以及斜线上的数字之和均为15,并输出这个二维数组
好的,我可以回答这个问题。以下是用 Java 生成符合要求的二维数组的代码:
```java
import java.util.Arrays;
import java.util.Random;
public class Main {
public static void main(String[] args) {
int[][] arr = new int[3][3];
Random rand = new Random();
// 随机生成1~9的数字填充二维数组
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
arr[i][j] = rand.nextInt(9) + 1;
}
}
// 计算每行、每列、每条对角线的和
int[] rowSum = new int[3];
int[] colSum = new int[3];
int diagSum1 = 0;
int diagSum2 = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
rowSum[i] += arr[i][j];
colSum[j] += arr[i][j];
if (i == j) {
diagSum1 += arr[i][j];
}
if (i + j == 2) {
diagSum2 += arr[i][j];
}
}
}
// 如果每行、每列、每条对角线的和都为15,则输出二维数组
if (rowSum[0] == 15 && rowSum[1] == 15 && rowSum[2] == 15
&& colSum[0] == 15 && colSum[1] == 15 && colSum[2] == 15
&& diagSum1 == 15 && diagSum2 == 15) {
for (int i = 0; i < 3; i++) {
System.out.println(Arrays.toString(arr[i]));
}
} else {
// 如果不符合要求,则重新生成二维数组
main(args);
}
}
}
```
这段代码会不断生成随机的二维数组,直到符合要求为止。每次生成二维数组时,都会计算每行、每列、每条对角线的和,如果都为15,则输出二维数组。如果不符合要求,则重新生成二维数组,直到符合要求为止。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)