第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在 Java 矩陣(二維數(shù)組)中的 10 x 10 0 矩陣周?chē)谱?1 的“邊界”

如何在 Java 矩陣(二維數(shù)組)中的 10 x 10 0 矩陣周?chē)谱?1 的“邊界”

慕蓋茨4494581 2023-07-28 15:13:24
我是java新手,所以,請(qǐng)用清晰直接的答案回應(yīng)。我制作了一個(gè) 12 x 12 的 0 矩陣。000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000我想用1秒的“柵欄”包圍中間區(qū)域。111111111111100000000001100000000001100000000001100000000001100000000001100000000001100000000001100000000001100000000001100000000001111111111111我對(duì) Java 很陌生,所以我只知道如何制作 12 x 12 并打印它,但現(xiàn)在如何制作柵欄。我還想知道如何使用循環(huán)在 10 x 10 0 網(wǎng)格內(nèi)隨機(jī)生成 10 個(gè)隨機(jī) 1 。請(qǐng)幫忙?。。?!這是我的代碼: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 回答

?
狐的傳說(shuō)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊

我在這里有一個(gè)稍微不同的建議:不要將邊框放入數(shù)據(jù)中。


如果你想明天有“*”而不是那些 1 怎么辦?!那么你就崩潰了,因?yàn)槟阌幸粋€(gè) int 數(shù)組,而不是 chars 數(shù)組?!


含義:您實(shí)際上應(yīng)該將數(shù)據(jù)和打印格式分開(kāi)。


當(dāng)然,這會(huì)使打印變得更加復(fù)雜(或者不會(huì),見(jiàn)下文),但是你的方法確實(shí)會(huì)產(chǎn)生很多丑陋的后果。例如:如果您想在某個(gè)時(shí)刻將該矩陣傳遞給某些“計(jì)算”代碼怎么辦?然后,該計(jì)算代碼必須知道您的“邊界”在該數(shù)據(jù)中的位置/方式,以將其從計(jì)算中排除?;蛘弋?dāng)您決定將“文本控制臺(tái)”程序轉(zhuǎn)變?yōu)?GUI 應(yīng)用程序時(shí)?然后你可能真的會(huì)畫(huà)一條邊界線......但你會(huì)繼續(xù)攜帶包含那些“邊界線”字符(雙關(guān)語(yǔ))的矩陣。


因此,為什么不去:


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");

}

正如您所看到的:這實(shí)際上非常簡(jiǎn)單,每當(dāng)您決定:我想以不同的方式打印內(nèi)容時(shí),您只需進(jìn)入并更改必要的內(nèi)容,而無(wú)需擔(dān)心 2D 數(shù)組中的數(shù)據(jù)!


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


查看完整回答
反對(duì) 回復(fù) 2023-07-28
?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

這里有幾件事:

  1. 內(nèi)部循環(huán)應(yīng)該迭代內(nèi)部長(zhǎng)度:

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

    代替:

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

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

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

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

在此之前,你們的工作時(shí)間是一樣的gameboard.length

您還應(yīng)該正確打印它:

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


查看完整回答
反對(duì) 回復(fù) 2023-07-28
?
慕的地6264312

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊

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]);

            }

        }       

    }    


查看完整回答
反對(duì) 回復(fù) 2023-07-28
  • 3 回答
  • 0 關(guān)注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)