繁体   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