# 21点小游戏用数组实现有那么一丢丢的小bug但是不影响效果的实现

这是一个关于用Java实现的21点小游戏代码,通过数组存储点数,但存在一些小bug。玩家可以输入Y/N决定是否要牌,输入A结束游戏。程序会计算并输出双方的总点数,寻找两个数组中的最大值。目前的问题是数组实现的局限性导致了某些未修复的缺陷,不影响基本游戏流程。
摘要由CSDN通过智能技术生成

21点小游戏用数组实现有那么一丢丢的小bug但是不影响效果的实现

因为数组有一定的局限性如果有那个大神知道咋修复bug请告诉我 谢谢

//21点的双人小游戏数组的方式实现有一丢丢缺陷不影响效果的实现
public class Demo21dian {
    public static void main(String[] args) {
        //创建一个数组存放21第点
        int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21};
        //定义两个初始化变量
        int a = 0;
        int b = 0;
        //创建第一个人的数据存放的数组
        int[] arr1 = new int[21];
        //创建 第二个人数据存放的数组
        int[] arr2 = new int[21];
        //创建随机数对象
        Random r = new Random();
        //创建键盘录入对象
        Scanner scanner = new Scanner(System.in);
        //定义一个无限循环
        c3:while (true) {
            //提示用户输入指令
            System.out.println("请输入指令(Y/N){Y表示发牌N表示不发牌");
            //第一个人的无限循环
            aq:while (true) {
                System.out.println("第一个人");
                String next1 = scanner.next();
                //如果第一个人输入Y表示要牌
                if (next1.equals("Y")) {
                    //在随机产生arr数组的索引
                    int i = r.nextInt(arr.length);
                    //让arr中随机产生的数存入到arr1中
                    arr1[a] = arr[i];
                    //让变量自增一
                    a++;
                    System.out.println("第一个人抽到的第" + a + "张牌是" + arr[i]);
                    //然后结束这个循环让第二个人输入
                    break aq;
                } else if (next1.equals("N")) {//如果输入N则不要牌结束循环
                    break aq;
                } else if (next1.equals("A")) {//输入A结束大循环
                    break c3;
                }
            }
            //创建第二个人的循环
            bq:while (true) {
                System.out.println("第二个人");
                String next2 = scanner.next();
                if (next2.equals("Y")) {
                    int i = r.nextInt(arr.length);
                    arr2[b] = i;
                    b++;
                    System.out.println("第二个人抽到的第" + b + "张牌是" + i);
                    break bq;
                } else if (next2.equals("N")) {
                    break bq;
                } else if (next2.equals("A")) {
                    break c3;
                }
            }

        }
        //定义一个求和变量
        int sum2 = 0;
        //遍历arr1数组
        for (int i = 0; i < arr1.length; i++) {
            //让arr1数组中的数据相加放到sum2变量中
            sum2 = sum2 + arr1[i];

        }
        //输出第一个人的牌的总点数
        System.out.println("第一个人的总数为" + sum2);
        int sum1 = 0;
        for (int i = 0; i < arr2.length; i++) {
            sum1 = sum1 + arr2[i];

        }
        System.out.println("第一个人的总数为" + sum1);
        int i = sum(arr1, arr2);
        System.out.println("最大值为" + i);
    }
//定义一个求两个数组最大值的方法
    public static int sum(int[] arr1, int[] arr2) {
        //定义两个初始变量
        int sum1 = 0;
        int sum2 = 0;
        //遍历数组
        for (int i : arr1) {
            //让数组中的数加到一起
            sum1 = sum1 + i;
        }
        //遍历数组
        for (int i : arr2) {
            //让数组中的数加到一起
            sum2 = sum2 + i;
        }
        //判断数组那个大就return谁
        if (sum1 > sum2) {
            return sum1;
        } else {
            return sum2;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值