我如何用随机点中的某些值填充数组 JAVA
how do i populating an array with certain values in random spots JAVA
public static void main(String[] args) {
int castleTiles[][] = new int[8][8];
for(int i = 0; i < castleTiles.length; i++) {
for(int j = 0; j < castleTiles[i].length; j++) {
castleTiles[i][j] = 0;
}
}
for(int i = 0; i < castleTiles.length; i++) {
for(int j = 0; j < castleTiles[i].length; j++) {
System.out.printf("%3d", castleTiles[i][j]);
}
System.out.println();
}
}
我需要在数组中的 5 个随机不同位置插入数字 1 5 次,在数组中的随机位置插入数字 2 一次
import java.util.Random;
public class HelloWorld{
public static void main(String[] args) {
int castleTiles[][] = new int[8][8];
for(int i = 0; i < castleTiles.length; i++) {
for(int j = 0; j < castleTiles[i].length; j++) {
castleTiles[i][j] = 0;
}
}
Random rn = new Random();
for(int i =0; i < 5; i++)
{
int x = rn.nextInt(7) + 0;
int y = rn.nextInt(7) + 0;
castleTiles[x][y] = 1;
}
int x = rn.nextInt(7) + 0;
int y = rn.nextInt(7) + 0;
castleTiles[x][y] = 2;
for(int i = 0; i < castleTiles.length; i++) {
for(int j = 0; j < castleTiles[i].length; j++) {
System.out.printf("%3d", castleTiles[i][j]);
}
System.out.println();
}
}
}
首先,castleTiles
数组创建时不需要设置0,int
数组默认填充0。
接下来,最好创建一个 array/list 要添加到拼贴中的点值(例如 {1, 1, 1, 1, 1, 2}
)。
最后,在填充数组时,我们应该检查我们是否将点放入空单元格中:
int castleTiles[][] = new int[8][8];
int[] spots = {1, 1, 1, 1, 1, 2};
Random random = new Random();
for (int s : spots) {
while (true) {
int r = random.nextInt(64);
int x = r / 8;
int y = r % 8;
if (castleTiles[x][y] == 0) {
castleTiles[x][y] = s;
break;
}
}
}
在显示 .
而不是 0 之后,casteTiles
可能如下所示:
for(int i = 0; i < castleTiles.length; i++) {
for(int j = 0; j < castleTiles[i].length; j++) {
System.out.print(" " + (castleTiles[i][j] == 0 ? "." : Integer.toString(castleTiles[i][j])));
}
System.out.println();
}
. . . . . . . 1
. . . . . 2 . .
. . 1 . . . . .
. . . . . . . .
1 . 1 . . . . .
. . . . . . . .
. 1 . . . . . .
. . . . . . . .
public static void main(String[] args) {
int castleTiles[][] = new int[8][8];
for(int i = 0; i < castleTiles.length; i++) {
for(int j = 0; j < castleTiles[i].length; j++) {
castleTiles[i][j] = 0;
}
}
for(int i = 0; i < castleTiles.length; i++) {
for(int j = 0; j < castleTiles[i].length; j++) {
System.out.printf("%3d", castleTiles[i][j]);
}
System.out.println();
}
}
我需要在数组中的 5 个随机不同位置插入数字 1 5 次,在数组中的随机位置插入数字 2 一次
import java.util.Random;
public class HelloWorld{
public static void main(String[] args) {
int castleTiles[][] = new int[8][8];
for(int i = 0; i < castleTiles.length; i++) {
for(int j = 0; j < castleTiles[i].length; j++) {
castleTiles[i][j] = 0;
}
}
Random rn = new Random();
for(int i =0; i < 5; i++)
{
int x = rn.nextInt(7) + 0;
int y = rn.nextInt(7) + 0;
castleTiles[x][y] = 1;
}
int x = rn.nextInt(7) + 0;
int y = rn.nextInt(7) + 0;
castleTiles[x][y] = 2;
for(int i = 0; i < castleTiles.length; i++) {
for(int j = 0; j < castleTiles[i].length; j++) {
System.out.printf("%3d", castleTiles[i][j]);
}
System.out.println();
}
}
}
首先,castleTiles
数组创建时不需要设置0,int
数组默认填充0。
接下来,最好创建一个 array/list 要添加到拼贴中的点值(例如 {1, 1, 1, 1, 1, 2}
)。
最后,在填充数组时,我们应该检查我们是否将点放入空单元格中:
int castleTiles[][] = new int[8][8];
int[] spots = {1, 1, 1, 1, 1, 2};
Random random = new Random();
for (int s : spots) {
while (true) {
int r = random.nextInt(64);
int x = r / 8;
int y = r % 8;
if (castleTiles[x][y] == 0) {
castleTiles[x][y] = s;
break;
}
}
}
在显示 .
而不是 0 之后,casteTiles
可能如下所示:
for(int i = 0; i < castleTiles.length; i++) {
for(int j = 0; j < castleTiles[i].length; j++) {
System.out.print(" " + (castleTiles[i][j] == 0 ? "." : Integer.toString(castleTiles[i][j])));
}
System.out.println();
}
. . . . . . . 1
. . . . . 2 . .
. . 1 . . . . .
. . . . . . . .
1 . 1 . . . . .
. . . . . . . .
. 1 . . . . . .
. . . . . . . .