分析:
1.创建三个方法分别得到开奖号码(奖池号码),中奖号码(用户输入的中奖号码),和一个避免开奖号码和中奖号码里出现重复号码的comPare方法。
2.在主方法里调用方法得到开奖号码,中奖号码,在通过嵌套for循环遍历判断中奖蓝球和红球个数,并根据题目用for循环嵌套写出各中奖的情况。
1.方法部分代码如下:
public static int[] creatInput() {//创建方法得到一个中奖号码数组。 int inputarr[] = new int[7]; Scanner sc = new Scanner(System.in); for (int i = 0; i < 6; ) { System.out.println("请输入第" + (i + 1) + "个红球号码"); int inputnumber = sc.nextInt(); if (inputnumber >= 1 && inputnumber <= 33)//进行判断只有当数字在1~33以内才是有效数据。 { boolean flag = comPare(inputarr, inputnumber);//调用方法避免中奖号码里的出现重复号码。 if (!flag)//当flag为flase时才会执行,也就是没有重复的号码。下一步就可以把输入的数字存入中奖号码里。 { inputarr[i] = inputnumber; i++;//注意这里i++是把for循环里的i++放到了这,是为了每次都能取到有效号码,没有取到就会在for循环里再次随机一个号码。 } else//当号码存在时提醒用户。 { System.out.println("号码存在请重新输入:"); } } else//当号码超出范围时提醒。 { System.out.println("当前红色号码超出范围"); } } System.out.println("请输入蓝色号码:"); int lastnumber = sc.nextInt();//当上面的六次循环结束就得到了6个有效中奖号码,只需要再次把开奖数组中最后一个索引再随机一次就完成了 inputarr[6] = lastnumber; return inputarr;//将中奖数组返回 }
public static int[] creatAward() { int Arr[] = new int[7];//创建储存开奖号码的数组。 Random r = new Random(); for (int i = 0; i < 6; )//抽六次作为红色球号码 { int n = r.nextInt(33) + 1;//1~33.//创建1~33的随机数。 boolean flag = comPare(Arr, n);//调用布尔方法判断随机数n是否存在开奖结果数组中(因为红色球不能重复) if (!flag) { Arr[i] = n;//当flag为flase时才会执行,也就是没有重复的号码。下一步放入开奖号码里 i++; } } Arr[6] = r.nextInt(16) + 1;//最后再随机1~16的随机数放在开奖结果的最后一位。 return Arr;//返回这个开奖数组 }
static public boolean comPare(int arr[],int n)//创建布尔方法判断数组中是否存在n。 { for(int i=0;i<arr.length;i++) { if(arr[i]==n) { return true; } } return false; }
2.主方法部分:
public static void main(String[] args) { int arr[] = creatAward();//调用方法得到开奖数组 int input[]=creatInput();//调用方法得到中奖数组 int blueCount=0;//抽到号码中统计蓝球个数。 int redCount=0;//抽到号码中统计红球个数。 for(int i=0;i<arr.length-1;i++)//嵌套循环遍历判断开奖号码与中奖号码的红球中奖数目。 { for(int j=0;j<input.length-1;j++) { if(arr[i]==input[j]); redCount++; } } if(arr[arr.length-1]==input[input.length-1])//因为蓝球是最后一个球只需要比较中奖号码与开奖号码的最后一个就可以了。 { blueCount++; } 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("恭喜,中奖300元"); } 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("谢谢惠顾"); } }
完整代码如下:
package edu.test; import java.util.Random; import java.util.Scanner; public class Test4 { public static void main(String[] args) { int arr[] = creatAward();//调用方法得到开奖数组 int input[]=creatInput();//调用方法得到中奖数组 int blueCount=0;//抽到号码中统计蓝球个数。 int redCount=0;//抽到号码中统计红球个数。 for(int i=0;i<arr.length-1;i++)//嵌套循环遍历判断开奖号码与中奖号码的红球中奖数目。 { for(int j=0;j<input.length-1;j++) { if(arr[i]==input[j]); redCount++; } } if(arr[arr.length-1]==input[input.length-1])//因为蓝球是最后一个球只需要比较中奖号码与开奖号码的最后一个就可以了。 { blueCount++; } 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("恭喜,中奖300元"); } 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("谢谢惠顾"); } } public static int[] creatInput() {//创建方法得到一个开奖号码数组。 int inputarr[] = new int[7]; Scanner sc = new Scanner(System.in); for (int i = 0; i < 6; ) { System.out.println("请输入第" + (i + 1) + "个红球号码"); int inputnumber = sc.nextInt(); if (inputnumber >= 1 && inputnumber <= 33)//进行判断只有当数字在1~33以内才是有效数据。 { boolean flag = comPare(inputarr, inputnumber);//调用方法避免开奖号码里的出现重复号码。 if (!flag)//当flag为flase时才会执行,也就是没有重复的号码。下一步就可以把输入的数字存入中奖号码里。 { inputarr[i] = inputnumber; i++;//注意这里i++是把for循环里的i++放到了这,是为了每次都能取到有效号码,没有取到就会在for循环里再次随机一个号码。 } else//当号码存在时提醒用户。 { System.out.println("号码存在请重新输入:"); } } else//当号码超出范围时提醒。 { System.out.println("当前红色号码超出范围"); } } System.out.println("请输入蓝色号码:"); int lastnumber = sc.nextInt();//当上面的六次循环结束就得到了6个有效开奖号码,只需要再次把开奖数组中最后一个索引再随机一次就完成了 inputarr[6] = lastnumber; return inputarr;//将开奖数组返回 } public static int[] creatAward() { int Arr[] = new int[7];//创建储存中奖号码的数组。 Random r = new Random(); for (int i = 0; i < 6; )//抽六次作为红色球号码 { int n = r.nextInt(33) + 1;//1~33.//创建1~33的随机数。 boolean flag = comPare(Arr, n);//调用布尔方法判断随机数n是否存在开奖结果数组中(因为红色球不能重复) if (!flag) { Arr[i] = n;//当flag为flase时才会执行,也就是没有重复的号码。下一步放入开奖号码里 i++; } } Arr[6] = r.nextInt(16) + 1;//最后再随机1~16的随机数放在开奖结果的最后一位。 return Arr;//返回这个开奖数组 } static public boolean comPare(int arr[],int n)//创建布尔方法判断数组中是否存在n。 { for(int i=0;i<arr.length;i++) { if(arr[i]==n) { return true; } } return false; } }
代码运行结果如下:
有一说一这中奖真的是太难了。