双色球开奖主要是数组的赋值以及电脑随机数的产生
模拟双色球开奖:
int money=0;
int [] cho=new int[6];//红球
int[] last=new int[7];//最后选球结果
int ch=0;//篮球
String a="机选";
String b="自选";
Scanner in=new Scanner(System.in);
System.out.println("请输入选择方式,机选或者自选");
String c=in.next();
if(c.equals(b)){//控制选择的方式为手选
for(int i=0;i<cho.length;i++){//遍历输入数组的值,为红球号码
System.out.println("请输入第"+(i+1)+"个红球");
cho[i]=in.nextInt();
if(cho[i]>33||cho[i]<1){//控制输入的范围
System.out.println("输入超出号数限制,请重新输入");
i--;
}
for(int j=0;j<i;j++){//控制输入号码不能重复
if(cho[i]==cho[j]){
System.out.println("输入号码与前面重复,请重熟入");
i--;
}
}
}
for(int i=1;i<2;i++){ //单独输入蓝球
System.out.println("请输入篮球号码");
ch=in.nextInt();
if(ch>16||ch<1){//控制范围
System.out.println("输入超出限制,请重新输入");
i--;
}
}
}
else if(c.equals(a)){//控制选择的方式为机选,此后内容同理手选,只是将值改为随机
for(int i=0;i<cho.length;i++){
cho[i]=(int)(Math.random()*33+1);//随机产生数,遍历赋值给数组
for(int j=0;j<i;j++){
if(cho[i]==cho[j]){
i--;
}
}
}
for(int i=1;i<2;i++){
ch=(int)(Math.random()*16+1);
}
}
for(int i=0;i<cho.length;i++){
for(int j=(i+1);j<cho.length;j++){//对号码进行选择排序,同样可以冒泡
if(cho[j]<cho[i]){
cho[i]=cho[i]^cho[j];
cho[j]=cho[i]^cho[j];
cho[i]=cho[i]^cho[j];
}
}
}
for(int i=0;i<last.length;i++){//将红球与蓝球同时放入一个数组
if(i<last.length-1){
last[i]=cho[i];
}
if(i==(last.length-1)){
last[i]=ch;
}
}
System.out.print("你选择的号码是:");
for(int i=0;i<last.length;i++){//输出该数组作为选择的号码
System.out.print(last[i]+" ");
}
int[]com=new int[7];//开奖数组
int[]com1=new int[6];
int com2=0;
for(int i=0;i<com1.length;i++){//下面为开奖号码,与机选同理
com1[i]=(int)(Math.random()*33+1);
for(int j=0;j<i;j++){
if(com1[i]==com1[j]){
i--;
}
}
}
for(int i=1;i<2;i++){
com2=(int)(Math.random()*16+1);
}
for(int i=0;i<com1.length;i++){
for(int j=(i+1);j<com1.length;j++){
if(com1[j]<com1[i]){
com1[i]=com1[i]^com1[j];
com1[j]=com1[i]^com1[j];
com1[i]=com1[i]^com1[j];
}
}
}
for(int i=0;i<com.length;i++){
if(i<com.length-1){
com[i]=com1[i];
}
if(i==(com.length-1)){
com[i]=com2;
}
}
System.out.print("\n开奖号码是: ");
for(int i=0;i<com.length;i++){
System.out.print(com[i]+" ");
}
System.out.println("\n中奖结果:");
int count=0;
int count1=0;
for(int i=0;i<cho.length;i++){
for(int j=0;j<cho.length;j++){
if(com1[i]==cho[j]){
count++;
}
}
}
if(ch==com2){
count1=1;
}
if(count1==1){//开奖结果
switch(count){
case 0:
case 1:
case 2:System.out.println("恭喜你中了六等奖:5块钱");break;
case 3:System.out.println("恭喜你中了五等奖:10块钱");break;
case 4:System.out.println("恭喜你中了四等奖:200块钱");break;
case 5:System.out.println("恭喜你中了三等奖:3000块钱");break;
case 6:System.out.println("恭喜你中了一等奖:");break;
}
}
else if(count1==0){
switch(count){
case 4:System.out.println("恭喜你中了五等奖:10块钱");break;
case 5:System.out.println("恭喜你中了四等奖:200块钱");break;
case 6:System.out.println("恭喜你中了二等奖:赚大了");break;
default:System.out.println("什么都没得到,请再接再厉");break;
}
}
当然为了减少代码量这个题可以写一个方法来调用机选方式,同时运用于开奖号码。
深入思考题目,为这个题增加点内容:由用户守号,确定中奖时要买多少期,以及花了多少钱:
只需要将代码稍作改变即可实现:
int pay=0;
int num=0;
int [] cho=new int[6];//红球
int[] last=new int[7];//最后选球结果
int ch=0;//篮球
String a="机选";
String b="自选";
Scanner in=new Scanner(System.in);
System.out.println("请输入选择方式,机选或者自选");
String c=in.next();
if(c.equals(b)){
for(int i=0;i<cho.length;i++){
System.out.println("请输入第"+(i+1)+"个红球");
cho[i]=in.nextInt();
if(cho[i]>33||cho[i]<1){
System.out.println("输入超出号数限制,请重新输入");
i--;
}
for(int j=0;j<i;j++){
if(cho[i]==cho[j]){
System.out.println("输入号码与 前面重复,请重新输入");
i--;
}
}
}
for(int i=1;i<2;i++){
System.out.println("请输入篮球号码");
ch=in.nextInt();
if(ch>16||ch<1){
System.out.println("输入超出限制,请重新输入");
i--;
}
}
}
else if(c.equals(a)){
for(int i=0;i<cho.length;i++){
cho[i]=(int)(Math.random()*33+1);
for(int j=0;j<i;j++){
if(cho[i]==cho[j]){
i--;
}
}
}
for(int i=1;i<2;i++){
ch=(int)(Math.random()*16+1);
}
}
for(int i=0;i<cho.length;i++){
for(int j=(i+1);j<cho.length;j++){
if(cho[j]<cho[i]){
cho[i]=cho[i]^cho[j];
cho[j]=cho[i]^cho[j];
cho[i]=cho[i]^cho[j];
}
}
}
for(int i=0;i<last.length;i++){
if(i<last.length-1){
last[i]=cho[i];
}
if(i==(last.length-1)){
last[i]=ch;
}
}
System.out.print("你选择的号码是:");
for(int i=0;i<last.length;i++){
System.out.print(last[i]+" ");
}
int[]com=new int[7];
int[]com1=new int[6];
int com2=0;
for(;;){//由死循环控制一直开奖
num++;//由num计数开奖次数,同时等同于购买彩票次数
for(int i=0;i<com1.length;i++){
com1[i]=(int)(Math.random()*33+1);
for(int j=0;j<i;j++){
if(com1[i]==com1[j]){
i--;
}
}
}
for(int i=1;i<2;i++){
com2=(int)(Math.random()*16+1);
}
for(int i=0;i<com1.length;i++){
for(int j=(i+1);j<com1.length;j++){
if(com1[j]<com1[i]){
com1[i]=com1[i]^com1[j];
com1[j]=com1[i]^com1[j];
com1[i]=com1[i]^com1[j];
}
}
}
for(int i=0;i<com.length;i++){
if(i<com.length-1){
com[i]=com1[i];
}
if(i==(com.length-1)){
com[i]=com2;
}
}
int count=0;//此处往上代码与,上题同理,此处count用于计数红球中奖个数
int count1=0;//此处用于确定蓝球是否中奖
for(int i=0;i<cho.length;i++){
for(int j=0;j<cho.length;j++){//红球中奖一个则count增加一
if(com1[i]==cho[j]){
count++;
}
}
}
if(ch==com2){//蓝球中奖则count1为1
count1=1;
}
if(count1==1){
switch(count){//pay记载每注中奖得金额合计
case 0:
case 1:
case 2:pay+=5;break;
case 3:pay+=10;break;
case 4:pay+=200;break;
case 5:pay+=3000;break;
case 6:break;
}
}
else if(count1==0){
switch(count){
case 4:pay+=10;break;
case 5:pay+=200;break;
case 6:pay+=500000;break;
default:break;
}
}
if(count1==1&&count==6){//中一等奖时红球count为6,count1为1,此时输出花掉的钱num*2,购买次数num,以及累计中奖金额。
System.out.println("恭喜中得一等奖\n你总共买了彩票"+num+"次");
System.out.println("总共中奖得钱:"+pay);
System.out.println("总共花钱:"+num*2);
break;
}
}