2D数组如何避免相同的数字

时间:2013-04-22 11:16:57

标签: java

晚上好,我想用不同的数字填写一个5 x 5的表格我不希望每个列都有相同的数字我应该有限制,属于某个限制,我能做但不做知道如何避免不超过表格中的数字

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

2 个答案:

答案 0 :(得分:2)

对于每一行,创建一个包含它可以包含的整数的列表,然后随机播放列表(使用Collections.shuffle()),并保留5个第一个元素。

或者,如果您的目标是为整个表格提供不同的元素,请创建一个包含矩阵可以包含的所有整数的列表,然后随机播放列表,遍历列表以填充矩阵。

答案 1 :(得分:0)

您可以获得HashSet个数字。添加到此并且不允许重复。如果需要,使用toArray()方法获取数组对象。

如果您仍想使用数组,那么add()的{​​{1}}方法会返回HashMap,如果该值在当前集中不存在,那么如果true则添加如果true那么,请到表格。

这允许您在不必随机播放的情况下向表中添加元素,即如果您想要不断更新表而不必在显示之前等待完整集。

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