前几天写了个双色球的小程序还挺有意思的。分享一下思路和代码。下图是该程序的需求。
①可以发现红球和蓝球是分开来判定的,所以可以将红球组成一个数组,蓝球因为只有一个所以可以放一边。
②我们可以先将随机生成的 红色球 的号码组成一个数组A,再将购买的红色球号码组成数组B
③然后我们将数组A与数组B进行对比,计算出相同号码的个数,接着对蓝色球进行判断。
④将上面的红色球相同的个数 与 蓝色球是否相同的判断来判定中了几等奖。
不多bb,代码如下。
package com.company.ago;import java.util.Random;
import java.util.Scanner;public class Lottery {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int[]red = new int [6];//开奖的红色球组成数组redfor(int i=1;i<red.length;i++) {red[i-1]=i;}//给red数组的每个下标随机赋值 为 (1-33)Random rand=new Random();for(int i = 0;i<6;i++) {int a=rand.nextInt(33)+1;red[i]=a; System.out.println(red[i]);}//随机赋值蓝色球b为(1-16)int b=rand.nextInt(16)+1; //根据购买者输入的号码确定购买红色球的号码的数组,首先定义数组int[]c = new int[6];System.out.println("--------------接下来请选取您的红色球号码(1-33)-----------");//通过循环确定购买的六个红色球的号码,并将其赋值给数组cfor(int i=1;i<=6;i++) {System.out.println("请输入您购买的第"+i+"个红色号码:");int a=scanner.nextInt();//接受购买者输入的红色球号码c[i-1]=a;//给数组c的6个下标赋值}//接下来对开奖的红色球号码组成的数组red和购买的红色球号码组成的数组c进行排序//首先排序开奖的红色球号码,虽然我不知道排序和不排序有啥区别,但不排一下心里不舒服int temp;//在排序中接收较大的那个值int tempT;for(int i=0;i<red.length-1;i++) {for(int j=0;j<red.length-i-1;j++) {if(red[j]>red[j+1]) { temp = red[j];red[j] = red[j+1];red[j+1] = temp; } }}for(int i=0;i<c.length-1;i++) {for(int j=0;j<c.length-i-1;j++) {if(c[j]>c[j+1]) { tempT = red[j];c[j] = c[j+1];c[j+1] = tempT;} } } //将两个数组进行对比,如果值一样则将e++int e=0;//红色球号码相同的个数for(int j = 0;j<6;j++) {for(int i =0;i<6;i++) {if(red[i]==c[j]) { c[j]=-1;e++; }} }System.out.println(e);//对比完成,接下来判断蓝色球是否相同System.out.println("请输入您购买的蓝色球号码(1-16):");int d=scanner.nextInt();if(b==d) {//若蓝色球号码相同switch(e) {//这里用switch比较方便 用if太蠢了case 6:System.out.println("您获得一等奖");break;case 5:System.out.println("您获得三等奖");break;case 4:System.out.println("您获得四等奖");break;case 3:System.out.println("您获得五等奖");break;case 1:case 2:case 0:System.out.println("您获得六等奖");break;}}else if(b!=d){//若蓝色球号码不相同switch(e) {case 6:System.out.println("您获得二等奖");break;case 5:System.out.println("您获得四等奖");break;case 4:System.out.println("您获得五等奖");break;} } }
}
写的不好,只是提供一种思路,若有更好的思路,欢迎指点。