Java练习8
一.题目
二.源码
package TestRuMen;import java.util.Random;
import java.util.Scanner;public class Test11
{public static void main(String[] args){// 调用 createNumber 方法生成一组随机的中奖号码int[] arr=createNumber();// 调用 userInputNumber 方法获取用户输入的投注号码int[] userInputArr=userInputNumber();// 初始化红球匹配数量为 0int redCount=0;// 初始化蓝球匹配数量为 0int blueCount=0;// 遍历用户输入的红球号码for (int i = 0; i < userInputArr.length-1; i++){// 获取当前用户输入的红球号码int redNumber=userInputArr[i];// 遍历中奖号码中的红球号码for (int j = 0; j < arr.length-1; j++){// 如果用户输入的红球号码与中奖红球号码匹配if (redNumber==arr[j]){// 红球匹配数量加 1redCount++;// 跳出内层循环,继续检查下一个用户输入的红球号码break;}}}// 获取用户输入的蓝球号码int blueNumber=userInputArr[6];// 如果用户输入的蓝球号码与中奖蓝球号码匹配if (blueNumber==arr[6]){// 蓝球匹配数量加 1blueCount++;}// 根据红球和蓝球的匹配数量判断中奖等级并输出结果if (redCount==6&&blueCount==1){System.out.println("恭喜您中1000万");}else if (redCount==6&&blueCount==0){System.out.println("恭喜您中500万");}else if (redCount==5&&blueCount==1){System.out.println("恭喜您中3000");}else if (redCount==5&&blueCount==0||redCount==4&&blueCount==1){System.out.println("恭喜您中200");}else if (redCount==4&&blueCount==0||redCount==3&&blueCount==1){System.out.println("恭喜您中10");}else if (redCount==2&&blueCount==1||redCount==1&&blueCount==1||redCount==0&&blueCount==1){System.out.println("恭喜您中5");}else{System.out.println("很遗憾,您没有中奖");}}/*** 获取用户输入的双色球投注号码。* @return 包含 6 个红球号码和 1 个蓝球号码的数组*/public static int[] userInputNumber(){// 创建一个长度为 7 的数组,用于存储用户输入的号码int[] arr=new int[7];// 创建 Scanner 对象,用于读取用户输入Scanner sc=new Scanner(System.in);// 循环获取用户输入的 6 个红球号码for (int i = 0; i < 6; ){System.out.println("请输入第"+(i+1)+"个红球号码:");// 读取用户输入的红球号码int redNumber=sc.nextInt();// 检查输入的红球号码是否在 1 到 33 的有效范围内if (redNumber>=1&&redNumber<=33){// 调用 contains 方法检查该红球号码是否已经存在于数组中boolean flag=contains(arr,redNumber);if (!flag){// 如果号码不存在,将其存入数组arr[i]=redNumber;// 索引加 1,继续获取下一个红球号码i++;}else{System.out.println("当前红球号码已存在,请重新输入");}}else{System.out.println("当前红球号码超出范围");// 索引减 1,重新获取该位置的红球号码i--;}}System.out.println("请输入蓝球号码:");// 循环获取用户输入的蓝球号码,直到输入有效为止while(true){// 读取用户输入的蓝球号码int blueNumber = sc.nextInt();// 检查输入的蓝球号码是否在 1 到 16 的有效范围内if (blueNumber >= 1 && blueNumber <= 16){// 如果号码有效,将其存入数组的最后一个位置arr[6] = blueNumber;// 跳出循环break;}else{System.out.println("当前蓝球号码超出范围");}}return arr;}/*** 生成一组随机的双色球中奖号码。* @return 包含 6 个随机红球号码和 1 个随机蓝球号码的数组*/public static int[] createNumber(){// 创建一个长度为 7 的数组,用于存储中奖号码int[] arr=new int[7];// 创建 Random 对象,用于生成随机数Random r=new Random();// 循环生成 6 个不重复的随机红球号码for (int i = 0; i < 6; ){// 生成一个 1 到 33 之间的随机整数作为红球号码int redNumber=r.nextInt(33)+1;// 调用 contains 方法检查该红球号码是否已经存在于数组中boolean flag=contains(arr,redNumber);if (!flag){// 如果号码不存在,将其存入数组arr[i]=redNumber;// 索引加 1,继续生成下一个红球号码i++;}}// 生成一个 1 到 16 之间的随机整数作为蓝球号码int blueNumber=r.nextInt(16)+1;// 将蓝球号码存入数组的最后一个位置arr[6]=blueNumber;return arr;}/*** 检查数组中是否包含指定的数字。* @param arr 要检查的数组* @param number 要查找的数字* @return 如果数组中包含该数字返回 true,否则返回 false*/public static boolean contains(int[] arr,int number){// 遍历数组中的每个元素for (int i = 0; i < arr.length; i++){// 如果当前元素等于要查找的数字if (arr[i]==number){// 返回 true,表示数组中包含该数字return true;}}// 遍历结束后未找到该数字,返回 falsereturn false;}
}