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

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

同一行沒(méi)有重復(fù)數(shù)字的多維數(shù)組

同一行沒(méi)有重復(fù)數(shù)字的多維數(shù)組

江戶川亂折騰 2021-09-12 16:46:34
  int matrice2 [][] = new int [5][5];  for (int i=0;i<5;i++) {      System.out.println(" ");      for(int j=0;j<5;j++) {          matrice2[i][j] = (int)(Math.random()*10);          System.out.print(" "+matrice2[i][j]+" ");      }  }  System.out.println(" ");  System.out.println(" ");  for (int i=0;i<5;i++) {      System.out.println(" ");      for(int j=0;j<5;j++) {          for (int k=0;k<5;k++) {              if(j!=k) {                  if (matrice2[i][j]==matrice2[i][k]) {                      matrice2[i][k]=(int)(Math.random()*10);                  }              }          }          System.out.print(" "+matrice2[i][j]+" ");      }  }我想制作一個(gè)多維數(shù)組,而在同一行中沒(méi)有任何重復(fù)的數(shù)字,因此該列是否有重復(fù)的數(shù)字并不重要。我在這里所做的是生成方形的 5x5 數(shù)組。將索引“j”作為與索引“k”中的數(shù)字進(jìn)行比較的索引,如果存在與索引“j”中包含的數(shù)字相等的數(shù)字,則檢查整行。所以我唯一的問(wèn)題是,在檢測(cè)到“k”中的數(shù)字等于“j”中的數(shù)字后,索引“k”中的數(shù)字將生成一個(gè)新數(shù)字來(lái)替換“k”中的當(dāng)前數(shù)字,但結(jié)果在控制臺(tái)顯示原始 5x5 數(shù)組(在更改之前是數(shù)組的第一個(gè)形式)已更改,但已替換的數(shù)字生成的數(shù)字已經(jīng)存在,即使它應(yīng)該繼續(xù)更改,直到“k”無(wú)法檢測(cè)到任何重復(fù)的數(shù)字。我可以想到其他方法,但我真的很想知道為什么它不起作用,盡管我真的認(rèn)為它不應(yīng)該帶來(lái)任何問(wèn)題,但我可能錯(cuò)過(guò)了一些東西。這是不應(yīng)該發(fā)生的結(jié)果示例。從9 1 3 8 45 3 2 4 89 8 5 6 56 3 0 8 72 8 6 3 9到9 1 3 8 45 3 2 4 89 8 5 6 96 3 0 8 72 8 6 3 9它不應(yīng)該發(fā)生,因?yàn)椤発”應(yīng)該從索引 0 開(kāi)始到 4 看到它。雖然“j”在索引 4 中,而“k”在索引 0 中,它應(yīng)該立即檢測(cè)到它并將“k”中的數(shù)字更改為其他隨機(jī)數(shù)。編輯:我看到你們展示的不同方式,但我要求的是在不使用任何導(dǎo)入的情況下提供更好的解決方案。我們的老師給了我們這個(gè)作業(yè),告訴我們沒(méi)有使用任何這些導(dǎo)入,這使得它變得更加復(fù)雜,但這正是我們所要求的。我嘗試了一段時(shí)間,但仍然沒(méi)有發(fā)生任何變化。
查看完整描述

3 回答

?
胡子哥哥

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

我以不同的方式編輯了您的代碼。我寫(xiě)了一些注釋來(lái)清楚地理解代碼。請(qǐng)嘗試一下。


public class UniqueMatrix {

    public static void main(String[] args) {


        int matrix[][] = new int[5][5];

        boolean uniqeMatrixFound = false;

        while (!uniqeMatrixFound) {

            //fill matrix until uniqe matrix found value is true 

            fillMatrix(matrix);

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

                HashSet<Integer> columnNumber = new HashSet<>();

                for (int j = 0; j < matrix.length; j++) {

                    columnNumber.add(matrix[j][i]);

                }

                //if set size not equal to matrix size , create an new uniqe matrix with breaking false value

                if (columnNumber.size() != matrix.length) {

                    uniqeMatrixFound = false;

                    break;

                }

                uniqeMatrixFound = true;

            }

        }


        //print an array 

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

            System.out.println(" ");

            for (int j = 0; j < matrix.length; j++) {

                System.out.print(" " + matrix[i][j] + " ");

            }

        }


    }


    //create a matrix with unique value in all rows.

    private static void fillMatrix(int[][] matrice2) {

        ArrayList<Integer> list = new ArrayList<Integer>();

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

            list.add(i);

        }

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

            Collections.shuffle(list);

            for (int j = 0; j < matrice2.length; j++) {

                matrice2[i][j] = list.get(j);

            }

        }

    }


}



查看完整回答
反對(duì) 回復(fù) 2021-09-12
?
弒天下

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

我閱讀您的邏輯的方式是,當(dāng)您找到重復(fù)項(xiàng)時(shí),您會(huì)生成一個(gè)新數(shù)字,并且該新數(shù)字將在外 ( j) 循環(huán)的下一次迭代中進(jìn)行驗(yàn)證。問(wèn)題是j==k因?yàn)樵摂?shù)字不會(huì)被驗(yàn)證,通常這不是問(wèn)題,因?yàn)?code>j會(huì)增加然后該數(shù)字將被驗(yàn)證,j==4因?yàn)槟鞘亲詈笠淮蔚臅r(shí)間除外。

因此,修改最右邊的列并且不會(huì)檢查該值,因?yàn)?'j==k' 永遠(yuǎn)不會(huì)為假。


查看完整回答
反對(duì) 回復(fù) 2021-09-12
?
當(dāng)年話下

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

這是解決問(wèn)題的不同方法,它使用混洗的 ArrayList 而不是檢查當(dāng)前行中是否存在值。


int matrice2[][] = new int[5][5];

ArrayList<Integer> sourceMatrix = new ArrayList<Integer>();


for (int i = 0; i < 10; i++)

    sourceMatrix.add(i);


//generate random matrix using shuffled arraylist

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

    Collections.shuffle(sourceMatrix);

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

        matrice2[i][j] = sourceMatrix.get(j);

    }

}


//print generated matrix

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

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

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

    }

    System.out.println();

}


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

添加回答

舉報(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)