2013-04-22 41 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则没有。

这允许您添加元素到表格中,而不必洗牌,即如果您想不断更新表格而不必在显示之前等待整个表格。

这是假设你只是希望这些数字对于表格而言是唯一的,而不仅仅是行的位置。