【问题标题】:Java 2d Array If statementJava 2d 数组 If 语句
【发布时间】:2015-11-11 19:39:56
【问题描述】:

我制作了一个二维数组来显示地图,我在制作它时遇到了麻烦,因此如果随机数“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("");         
    }
    }
}

有人有办法吗?

【问题讨论】:

  • 你尝试了很多“东西”,但你说的这些“东西”到底是什么?

标签: java arrays 2d helper


【解决方案1】:

一种方法是选择两个随机数并循环直到它们都不为零。

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;

第二个版本的作用并不明显,所以可能需要注释来解释。

【讨论】:

    【解决方案2】:

    现在,您对两个维度使用相同的随机数,因此 (0, 0)、(1, 1)、(2, 2) 或 (3, 3) 都可以设置为 1 ,但没有其他景点。

    选择 2 个不同的随机数,每个维度一个。最好创建一个java.util.Random 对象,这样你就可以调用nextInt(4) 来获取你需要的范围。在while 循环中,如果两个数字都是0,则再次选择2 个不同的随机数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多