簡體   English   中英

2D數組如何避免相同的數字

[英]2D array how to avoid the same numbers

晚上好,我想用不同的數字填寫一個五×五的表我不希望每列都有相同的數字我應該有限制,屬於某個限制,我能夠做但不知道如何避免不超過一次表中的數字

int num;
        int [][] array = new int [5][5];
        Random r = new Random();
        for (int row = 0; row < array.length; row++) {
            for (int col = 0; col < array[row].length; col++) { 
            if(row == 0){
                     num =r.nextInt(15);
                    array[row][col]=num;
            }else if(row == 1){
                     num =r.nextInt(31-16)+16;
                    array[row][col]=num;
            }else if(row == 2){
                     num =r.nextInt(45-31)+31;
                    array[row][col]=num;
            }else if(row == 3){
                     num =r.nextInt(61-46)+46;
                    array[row][col]=num;
            }else if(row == 4){
                     num =r.nextInt(75-61)+61;
                    array[row][col]=num;
            }
            }
        }

對於每一行,創建一個包含它可以包含的整數的列表,然后將列表洗牌(使用Collections.shuffle() ),並保留5個第一個元素。

或者,如果您的目標是為整個表格提供不同的元素,請創建一個包含矩陣可以包含的所有整數的列表,然后隨機播放列表,遍歷列表以填充矩陣。

您可以擁有已經采用的數字的HashSet 添加到此並且不允許重復。 如果需要,使用toArray()方法獲取數組對象。

如果你仍然想使用數組那么add()方法HashMap返回true如果該值不當前集中存在,因此,如果true再加入到表中,如果false則沒有。

這允許您在不必隨機播放的情況下向表中添加元素,即如果您想要不斷更新表而不必在顯示之前等待完整集。

假設您只希望數字對於表而言是唯一的,而不僅僅是行位置。

暫無
暫無

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

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