【问题标题】:how do i populating an array with certain values in random spots JAVA我如何在随机点JAVA中填充具有某些值的数组
【发布时间】:2021-12-05 02:12:54
【问题描述】:
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 一次

【问题讨论】:

    标签: java arrays matrix random 2d


    【解决方案1】:

    首先,castleTiles数组创建时不需要设置0,int数组默认填充为0。

    接下来,最好创建要添加到图块的点值的数组/列表(例如{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  .  .  .  .  .  .
      .  .  .  .  .  .  .  .
    

    【讨论】:

      【解决方案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();
              }
          
          
          }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-17
        • 2013-04-18
        • 2011-11-29
        • 1970-01-01
        • 2017-06-04
        • 1970-01-01
        • 2015-02-11
        相关资源
        最近更新 更多