2013-04-22 51 views
0

晚上好我想用不同的數字填充一個五x五表格我不想每個列都有相同的數字我有限制,應該是屬於一定的限制,我能夠做的,但不知道如何避免成爲不超過一次在表二維數組如何避免相同的數字

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; 
      } 
      } 
     } 
+0

您是否定義了一系列數字? – 2013-04-22 11:18:17

+0

你總是可以製作一個神奇的方形 – Patashu 2013-04-22 11:23:10

回答

2

每一行的數字更多,創建一個包含它可以包含整數列表,然後洗牌列表( Collections.shuffle()),並保留5個第一個元素。或者,如果您的目標是爲整個表格添加不同的元素,請創建一個包含矩陣可以包含的所有整數的單個列表,然後對列表進行隨機播放,遍歷列表以填充矩陣。

+0

謝謝你分配我做它,我使用一個數組和'list.contains(num)' – 2013-04-22 11:40:48

0

你可以有一個HashSet已經採取的數字。添加到此和重複是不允許的。如果需要,使用toArray()方法獲取數組對象。

如果您仍然想使用數組那麼HashMap回報trueadd()方法,如果該值不當前集中存在,因此,如果true然後添加到表中,如果false則沒有。

這允許您添加元素到表格中,而不必洗牌,即如果您想不斷更新表格而不必在顯示之前等待整個表格。

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