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

2 回答 2

2

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

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

于 2013-04-22T11:20:51.303 回答
0

你可以有一个HashSet已经被占用的数字。添加到此和重复是不允许的。如果需要,使用该toArray()方法获取数组对象。

如果您仍想使用数组,则如果当前集合中不存在该值,则该add()方法HashMap返回,因此如果则添加到表中,如果则不添加。truetruefalse

这允许您将元素添加到表中而无需随机播放,即,如果您想要不断更新表并且不必在显示之前等待完整集。

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

于 2013-04-22T11:44:34.757 回答