Java 二维数组 If 语句
Java 2d Array If statement
我制作了一个二维数组来显示地图,但我在制作它时遇到了问题,如果随机数“1”可以放在数组中除 [0][0] 之外的任何位置,我已经尝试了很多东西但结果很奇怪。
public static void main (String[] args)
{
int rnd = (int) (Math.random()*4);
int[][]map;
int rows = 4;
int columns = 4;
map = new int[rows][columns];
map[rnd][rnd] = 1;
for(int i=0; i<map.length; i++){
for(int j=0; j<map[0].length; j++){
System.out.print(map[i][j] + " ");
}
System.out.println("");
}
}
}
有人有办法做到吗?
现在,您对两个维度使用相同的随机数,因此 (0, 0)、(1, 1)、(2, 2) 或 (3, 3) 可以设置为 1
,但没有其他景点。
选择 2 个不同的随机数,每个维度一个。最好创建一个 java.util.Random
对象,这样你就可以调用 nextInt(4)
来获得你需要的范围。在while
循环中,如果两个数都是0
,则再次选择2个不同的随机数。
一种方法是选择两个随机数并循环直到它们都不为零。
Random random = new Random();
int i, j;
do {
i = random.nextInt(4);
j = random.nextInt(4);
} while (i == 0 && j == 0);
int[][] map = new int[4][4];
map[i][j] = 1;
另一种方法是从 1 到 15 中选择一个随机数,然后使用除法和余数。
Random random = new Random();
int i = random.nextInt(15) + 1;
int[][] map = new int[4][4];
map[i/4][i%4] = 1;
第二个版本的作用不是很明显,所以可能需要评论来解释。
我制作了一个二维数组来显示地图,但我在制作它时遇到了问题,如果随机数“1”可以放在数组中除 [0][0] 之外的任何位置,我已经尝试了很多东西但结果很奇怪。
public static void main (String[] args)
{
int rnd = (int) (Math.random()*4);
int[][]map;
int rows = 4;
int columns = 4;
map = new int[rows][columns];
map[rnd][rnd] = 1;
for(int i=0; i<map.length; i++){
for(int j=0; j<map[0].length; j++){
System.out.print(map[i][j] + " ");
}
System.out.println("");
}
}
}
有人有办法做到吗?
现在,您对两个维度使用相同的随机数,因此 (0, 0)、(1, 1)、(2, 2) 或 (3, 3) 可以设置为 1
,但没有其他景点。
选择 2 个不同的随机数,每个维度一个。最好创建一个 java.util.Random
对象,这样你就可以调用 nextInt(4)
来获得你需要的范围。在while
循环中,如果两个数都是0
,则再次选择2个不同的随机数。
一种方法是选择两个随机数并循环直到它们都不为零。
Random random = new Random();
int i, j;
do {
i = random.nextInt(4);
j = random.nextInt(4);
} while (i == 0 && j == 0);
int[][] map = new int[4][4];
map[i][j] = 1;
另一种方法是从 1 到 15 中选择一个随机数,然后使用除法和余数。
Random random = new Random();
int i = random.nextInt(15) + 1;
int[][] map = new int[4][4];
map[i/4][i%4] = 1;
第二个版本的作用不是很明显,所以可能需要评论来解释。