想用数组随机生成一串数字 且不能重复 但我在判断数组中是否存在这个方法中有个疑问

想用数组随机生成一串数字 且不能重复
但我在判断数组中是否存在这个方法中有个疑问,为什么判断条件是它不存在的时候生成的随机数里面还是有重复的数字

img

img

而判断条件是存在的时候生成的随机数里面就不会重复

img

下面是全部代码

package demo3;

import java.util.Random;

public class DemoTest8 {
    public static void main(String[] args) {


        //随机生成中奖号码
        int[]arr=createNum();
        //用户输入自己的中奖号码
        //对比中奖号码  判断中奖等级

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }




    }

    //随机生成中奖号码
    public static int[] createNum() {
        //创建数组存储号码
        int[] arr = new int[7];
        //生成随机号码
        //红球1-33 号码不能重复 有六个红球
        //篮球1-16 号码可以与红球重复  只有一个蓝球
        Random r = new Random();
        //生成红球号码并添加到数组中
        for (int i = 0; i < arr.length-1; ) {
            int redNum=r.nextInt(33)+1;
            boolean flage = panduan(arr,redNum);
            if (!flage){
                arr[i]=redNum;
                //添加一次索引加一
                i++;
            }

        }
        //生成蓝色球号码
        int blueNum = r.nextInt(16)+1;
        arr[6]=blueNum;

        return arr;


    }


    //判断数组中是否存在
    public static boolean panduan(int[]arr,int redNum) {
        for (int i = 0; i < arr.length; i++) {
            if (redNum==arr[i]){
                return true;
            }
        }
        return false;
    }


}


img

第一种方法,是判断不完全,就退出了,是片面的。比如你的数组是[1,2,3,4,5],你输入3的时候,进入panduan方法中判断的时候,3!=1成立,则返回True退出panduan方法,后面的2,3,4,5都没有与之比较判断,所以这个方法不可行。博友理解了没,描述的逻辑应该比较清楚啦,还望采纳!!!