从扑克牌中随机抽5张排,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为 1,J为11,Q为12,K为13,而大,小王可以看成任意数字。

private static int getCountZero(int[] arr){
        int countZero = 0;
        for(int i=0;i<arr.length && arr[i] == 0;i++){
            countZero++;
//            if(arr[i] == 0){
//                countZero++;
//            }
        }
        if(countZero>2){
            //重新随机
            isSeries();
//            return false;
        }
        return countZero;
    }
    private static boolean isSeries(int[] arr){
        Arrays.sort(arr);
        //1.大小王个数
        int countZero = getCountZero(arr);

        //2.统计间隔数
        int countGrap = 0;
        for (int i = countZero;i<arr.length-1;i++){
            if(arr[i] == arr[i+1]){
                return false;
            }
            if(arr[i]+1 != arr[i+1]){
                //统计间隔数  0 0 1 2 3 4 9
                for(int j=arr[i];j<arr[i+1]-1;j++){
                    //
                    countGrap++;
                }
            }
        }
        if(countZero >= countGrap){
            return true;
        }
        return false;
    }
    public static void isSeries(){
        Random random = new Random();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入牌个数");
        int count = scanner.nextInt();
        int[] arr = new int[count];
        for(int i=0;i<arr.length;i++){
            arr[i] = random.nextInt(14);//[0,14)
        }

        System.out.println(Arrays.toString(arr));
        boolean flag = isSeries(arr);
        if(flag){
            System.out.println("是顺子");
        }else{
            System.out.println("不是顺子");
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_44822679/article/details/89520227