Java基本语法_循环练习系列(一)——模拟双色球
目前正在自学java中,学完循环这一块,简单写几个例子,使之更加熟练掌握循环语句和条件语句。
简述一下要这段代码要完成的任务:
/*有33个红色球,16个蓝色球。 在33个里选6个 ,16个里选1个。 加起来是7个号码。
一等奖:7个号码相符(6个红色球号码和1个蓝色球号码)(红色球号码顺序不限,下同) 奖金为当期高等奖奖金的70%加上奖金池里的。
二等奖:6个红色球号码相符; 奖金为当期高等奖奖金的30%
三等奖:5个红色球号码和1个蓝色球号码相符; 固定3000元。
四等奖:5个红色球号码或4个红色球号码和1个蓝色球号码相符;固定200元
五等奖:4个红色球号码或3个红色球号码和1个蓝色球号码相符; 固定10元
六等奖:1个蓝色球号码相符(有无红色球号码相符均可)。固定5元 */
1 import java.util.Arrays; 2 import java.util.Random; 3 import java.util.Scanner; 4 5 public class Practice12 { 6 7 /** 8 * @param args 9 */ 10 public static void main(String[] args) { 11 // TODO Auto-generated method stub 12 System.out.println("------双色球游戏开始------"); 13 int[] sysRedBall=new int[6]; 14 int sysBlueBall; 15 int[] userRedBall=new int[6]; 16 int userBlueBall; 17 int j=0; 18 int redCount=0; 19 int blueCount=0; 20 int[] redBall={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33}; 21 Random r=new Random(); 22 Scanner input=new Scanner(System.in); 23 //系统开始随机产生 24 //随机产生一个篮球 25 sysBlueBall=r.nextInt(16)+1; 26 27 //随机产生6个红球 28 for(int i=0;i<sysRedBall.length;i++){ 29 //while循环使用了一种算法,避免随机产生相同的数字,随机到的数字取值后就让它赋值为-1(重点,注意看) 30 while(true){ 31 j=r.nextInt(33); 32 if(redBall[j]!=-1){ 33 sysRedBall[i]=redBall[j]; 34 redBall[j]=-1; 35 break; 36 } 37 } 38 } 39 40 41 //用户输入 42 System.out.println("下面请您输入你猜的中奖号码:"); 43 System.out.print("请在数字(1~33)中选择6位数字:"); 44 for(int i=0;i<userRedBall.length;i++){ 45 userRedBall[i]=input.nextInt(); 46 } 47 System.out.print("请在数字(1~16)中选择1位数字:"); 48 userBlueBall=input.nextInt(); 49 50 //统计相同的数量 51 for(int u=0;u<userRedBall.length;u++){ 52 for(int s=0;s<sysRedBall.length;s++){ 53 if(userRedBall[u]==sysRedBall[s]){ 54 redCount++; 55 break; 56 } 57 } 58 } 59 if(sysBlueBall==userBlueBall){ 60 blueCount=1; 61 } 62 //判断得奖状况 63 if(redCount==6&&blueCount==1){ 64 System.out.println("一等奖,奖金为当期高等奖奖金的70%加上奖金池里的"); 65 }else if(redCount==6){ 66 System.out.println("二等奖,奖金为当期高等奖奖金的30% "); 67 }else if(redCount==5&&blueCount==1){ 68 System.out.println("三等奖,奖金为3000元 "); 69 }else if(redCount==5||(redCount==4&&blueCount==1)){ 70 System.out.println("四等奖,奖金为200元 "); 71 }else if(redCount==4||(redCount==3&&blueCount==1)){ 72 System.out.println("五等奖,奖金为10元 "); 73 }else if(blueCount==1){ 74 System.out.println("六等奖,奖金为5元 "); 75 }else{ 76 System.out.println("很遗憾,继续努力! "); 77 } 78 //输出本期中奖号码 79 //Arrays.sort(sysRedBall);//使用API中自带的Arrays类,sort()方法是进行升序排序 80 //下面for嵌套循环使用了冒泡排序法 81 for(int i=0;i<sysRedBall.length-1;i++){ 82 for(int h=0;h<sysRedBall.length-1-i;h++){ 83 if(sysRedBall[h]>sysRedBall[h+1]){ 84 int temp=sysRedBall[h]; 85 sysRedBall[h]=sysRedBall[h+1]; 86 sysRedBall[h+1]=temp; 87 } 88 89 } 90 } 91 System.out.print("本期红球号码为:"); 92 for(int red=0;red<sysRedBall.length;red++){ 93 System.out.print(sysRedBall[red]+" "); 94 } 95 System.out.println(); 96 System.out.println("本期篮球号码为:"+sysBlueBall); 97 } 98 }
望各位大神多多指教,给出意见,谢谢啦!