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