簡體   English   中英

使用特定和隨機整數/字符填充2D數組

[英]Filling a 2D array with specific and random integers / chars

我必須創建一個要打印的2D數組,但是我在努力包含所有特定細節方面都在努力。 我通過用戶輸入獲得了行數和列數,然后必須打印一個數組,該數組的左上角為“ S”,右下角為“ D”,並填充有隨機的“#”和隨機數。 在[1,100](含)范圍內隨機產生數字,而“#”的總數不能超過矩陣總大小的1/3。

但是,我很困惑,不知道我的代碼在哪里...

碼:

public void drawMaze(int numRows, int numCols) {

    int[][] mazeArray = new int[numRows][numCols];
    Random  random = new Random(); 

    // Starting Point
    mazeArray[0][0] = "S";
    // Destination Point
    mazeArray[numRows][numCols] = "D";

    for (int i = 0; i < mazeArray.length; i++) {
        for (int j = 0; j < mazeArray[i].length; j++) {
            mazeArray[i][j] = (int)(Math.random()*10);
        }
    }

}

幫助將不勝感激!

可能是這樣的:

public void drawMaze(int numRows, int numCols) {
    String[][] mazeArray = new String[numRows][numCols];
    Random random = new Random();
    for (int i = 0; i < mazeArray.length; i++) {
        for (int j = 0; j < mazeArray[i].length; j++) {
            int result = 1 + random.nextInt(200);
            if (result > 100) {
                mazeArray[i][j] = "#";
            } else {
                mazeArray[i][j] = Integer.toString(result);
            }
        }
    }
    //starting point
    mazeArray[0][0] = "S";
    //destination point
    mazeArray[numRows-1][numCols-1] = "D";
    for (int i = 0; i < mazeArray.length; i++) {
        for (int j = 0; j < mazeArray[i].length; j++) {
            System.out.print(String.format("%4s", mazeArray[i][j]));
        }
        System.out.println();
    }
}

200只是一個硬編碼的值。 您可以使其依賴於方法的參數。
System.out.print(String.format("%4s", mazeArray[i][j])); 負責間距(當然可以更改為另一個整數)。

您不應該一個一個接一個地去。 更好的方法可能是隨機填充字段,而將1/3的字段留空以填充#。

  • 用“#”填充完整的數組(mazeArray)
  • 計算整個字段以填充數字(numRows * numCols * 2/3)= maxFields
  • 設置一維數組(fieldsToFill),其中0填充到maxFields,遞增
  • 現在,隨機選擇多個fieldsToFill並將其填充在2-dim數組mazeArray中,然后從fieldsToFill中刪除該元素

這樣,您的迷宮就會變得更加隨機。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM