亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Java 矩陣(二維數組)中的 10 x 10 0 矩陣周圍制作 1 的“邊界”

如何在 Java 矩陣(二維數組)中的 10 x 10 0 矩陣周圍制作 1 的“邊界”

慕蓋茨4494581 2023-07-28 15:13:24
我是java新手,所以,請用清晰直接的答案回應。我制作了一個 12 x 12 的 0 矩陣。000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000我想用1秒的“柵欄”包圍中間區域。111111111111100000000001100000000001100000000001100000000001100000000001100000000001100000000001100000000001100000000001100000000001111111111111我對 Java 很陌生,所以我只知道如何制作 12 x 12 并打印它,但現在如何制作柵欄。我還想知道如何使用循環在 10 x 10 0 網格內隨機生成 10 個隨機 1 。請幫忙?。。?!這是我的代碼:class Main { public static void main(String[] args){ int[][] gameboard = new int[12][12];// make gameboard int r_length = gameboard.length;//row length int c_length = gameboard[0].length;//column length for (int x = 0; x < gameboard.length; x++) {   for(int y = 0; y < gameboard.length; y++){     gameboard[x][y] = x + y;     gameboard[0][y] = gameboard[1]; //replace row 1 (not working)     gameboard[11][y] = gameboard[1]; //replace row 12 (not working)     gameboard[x][0] = gameboard[1]; //replace column 1 (not working)     gameboard[x][11] = gameboard[1]; //replace column 12 (not working)    }  } for (int[] a : gameboard) {   for (int x :a) {     System.out.print("0");    }   System.out.println();  }//gameboard printing }}
查看完整描述

3 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

我在這里有一個稍微不同的建議:不要將邊框放入數據中。


如果你想明天有“*”而不是那些 1 怎么辦?!那么你就崩潰了,因為你有一個 int 數組,而不是 chars 數組?!


含義:您實際上應該將數據和打印格式分開。


當然,這會使打印變得更加復雜(或者不會,見下文),但是你的方法確實會產生很多丑陋的后果。例如:如果您想在某個時刻將該矩陣傳遞給某些“計算”代碼怎么辦?然后,該計算代碼必須知道您的“邊界”在該數據中的位置/方式,以將其從計算中排除?;蛘弋斈鷽Q定將“文本控制臺”程序轉變為 GUI 應用程序時?然后你可能真的會畫一條邊界線......但你會繼續攜帶包含那些“邊界線”字符(雙關語)的矩陣。


因此,為什么不去:


printTopLine();

for (int[] rows : gameboard) {

  printRow(row);

在哪里


public void printTopLine() {

   ...println("1111...

}


public void printRow(int[] values) {

   print("1");

   for (int v : values) print(v);

   print("1");

}

正如您所看到的:這實際上非常簡單,每當您決定:我想以不同的方式打印內容時,您只需進入并更改必要的內容,而無需擔心 2D 數組中的數據!


所以,長話短說:您可以更改代碼,以便您的 2D 矩陣僅與游戲板的值有關,以及如何“顯示”完全由其他代碼完成!


查看完整回答
反對 回復 2023-07-28
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

這里有幾件事:

  1. 內部循環應該迭代內部長度:

    for(int y = 0; y < gameboard[0].length; y++)

    代替:

    for(int y = 0; y < gameboard.length; y++)
  2. 您不能將數組分配給int,類型必須匹配。

    gameboard[0][y] = gameboard[1];
  3. 這不會做你想做的事:gameboard[x][y] = x + y;。它分配索引的總和。

由于它是一個正方形(兩個長度相等),因此您可以迭代一次:

for (int x = 0; x < gameboard.length; x++) {
     gameboard[0][x] = 1;
     gameboard[11][x] = 1;
     gameboard[x][0] = 1;
     gameboard[x][11] = 1;
}

在此之前,你們的工作時間是一樣的gameboard.length。

您還應該正確打印它:

 for (int[] a : gameboard) {
    for (int x :a) {
     System.out.print(x);
    }
   System.out.println();
  }


查看完整回答
反對 回復 2023-07-28
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

public static void main(String[] args) {

    char border = '1';

    char fillCharaters = '0';

    int gridLength = 12;

    int gridWidth = 12;

    char[][] arr = new char[12][12];

    Random random = new Random();


    for (int j=0; j<gridWidth ; j++){

        for (int i=0;i<gridLength;i++){

            if(j==0||j==gridWidth-1||i==0||i==gridLength-1){

                arr[j][i] = border;

            } else {

                arr[j][i] = fillCharaters;

            }

        }

        //To print the random characters in the 10X10 grid

        int r = random.nextInt(11);

        arr[j][r] = border;

    }

    print2DMatrix(arr);

}


public static void print2DMatrix(char mat[][]) 

    for (int i = 0; i < mat.length; i++) 

    {

        for (int j = 0; j < mat[i].length; j++){

            if(j==mat[i].length-1){

                System.out.println(mat[i][j]);

            } else{

                System.out.print(mat[i][j]);

            }

        }       

    }    


查看完整回答
反對 回復 2023-07-28
  • 3 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號