双色球,6个红球,1个蓝球,而且红球中的数据不能重复,红球的数字范围为1-33,蓝球的数字范围为1-16。
然后我们作为彩民,自己买号,在模拟器中则自己依次输入每个球对应的号码,最后开奖的时候判断我们中了多少。
双色球中奖规则:
我当时看到这个案例,感觉很麻烦,首先我认为最难搞的方面是,生成红球的随机数,这个数我网上查了一下,双色球的数字是不能重复的,那么我就得要生成不同的6个随机数,然后存到数组里。怎么实现,当时我还在想。
后来我就先把程序的功能先分块:
1.随机生成中奖号码,定义一个数组长度为6的int 类型的数组存红球的号码,且红球的数组中数据不能有相同的,定义数组长度为1的数组来存蓝球号码。
2.用户也是我,依次输入我的红球号码和蓝球号码。
3.统计结果,双色球要顺序和数字都相同才算有效,也就是说,数组的索引和索引对应的数据都要相同才可以。
4.判断结果。
然后我就开始写
第一部分
//随机生成中奖号码
Scanner sc = new Scanner(System.in);
Random r = new Random();
int[] red = new int[6];
int [] blue=new int[1];
blue [0]= r.nextInt(16) + 1;//随机生成蓝球的号码
System.out.println(blue[0]);
for (int i = 0; i < red.length; ) { //随机生成红球号码,且随机数不能重复
int a = r.nextInt(33) + 1;
boolean b = Shuijishupanduan(red, a);
if (!b) {
red[i] = a;
i++;
}
}
在其中我调用了一个有返回值的方法,用来判断随机数是否重复的,这是我认为最难的地方,但是我也想出来了哈哈哈。方法是这样的:
//判断随机数是否相同的方法
public static boolean Shuijishupanduan(int[] arr, int a) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == a) {
return true;
}
}
return false;
返回一个boolean类型,然后i++放在,if语句中,就表示随机数一直生成,到这个随机数在数组中没有相同的时候就存入数组中,然后才能 i 自增到数组中下一位循环。在这里我设了随机数的范围是1-33.
第二部分
//用户输入自己的号码
int []arr=new int[6];
int []arr1=new int[1];
System.out.println("覃泺宇牌双色球,赢到手麻");
int n=1;
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入你的第"+n+"个红球的号码:");
int shuru=sc.nextInt();
arr[i]=shuru;
n++;
}
System.out.println("请输入蓝球的号码:");
int B=sc.nextInt();
arr1[0]=B;
简单的遍历数组,然后给数组塞数据,逐个塞进去,定义了2个数组来存我自己输入的数据,然后后面就可以和之前随机生成的中奖号码的两个数组(一个红球的,一个蓝球的)进行比较。(索引相同的数据也相同才算有效)
第三部分
//判断红、蓝球有几个和中奖号码相同的,红球和蓝球分开统计。
int RED=xiangtong(red,arr);
int BULE=xiangtong(blue,arr1);
判断两个数组有几个数据相同,再定义一个计数器来统计相同的个数就完事了,那么我又要比红球的,又要比蓝球的,这两种是重复的工作,我当时就定义了一个方法,输入要比较的两个数组,就可以返回他们有几个相同索引数据也一样的元素。
//判断两个数组有多少个相同的数据
public static int xiangtong(int arr1[],int arr2[]) {
int xiangtongshu=0;
for (int i = 0; i < arr1.length; i++) {
if (arr2[i]==arr1[i]){ //双色球的号码要相同,而且还要对应的位置也相同(也就是俩数组的相同索引的数据要一样)
xiangtongshu++;
}
}
return xiangtongshu;
第四部分
就是判断结果了,依照上图的规则,用if语句就可以了,然后我就也定义了一个方法,只要输入红球中的数和蓝球中的数,便可返回几等奖。
//判断奖项
public static void jiang(int r,int b){
if (r==6 && b==1){
System.out.println("恭喜你!中了一等奖,奖金1000万元!");
}
else if (r==6 && b==0){
System.out.println("恭喜你!中了二等奖,奖金500万元!");
}
else if (r==5 && b==1){
System.out.println("恭喜你!中了三等奖,奖金3000元!");
}
else if ((r==5 && b==0)||(r==4 && b==1)){
System.out.println("恭喜你!中了个四等奖,奖金200元!");
} else if ((r==4 && b==0)||(r==3&&b==1)){
System.out.println("恭喜你!中了个五等奖,奖金10元");
}
else if ((r==2&&b==1)||(r==1&&b==1)||(r==0&&b==1)){
System.out.println("恭喜你!大怨种,中了六等奖,奖金5元");
}
}
再调用一下方法
jiang(RED,BULE);
总体的程序是这样的:
package Test;
import java.util.Random;
import java.util.Scanner;
public class Shangseqiu {
public static void main(String[] args) {
//随机生成中奖号码
Scanner sc = new Scanner(System.in);
Random r = new Random();
int[] red = new int[6];
int[] blue = new int[1];
blue[0] = r.nextInt(16) + 1;//随机生成蓝球的号码
for (int i = 0; i < red.length; ) { //随机生成红球号码,且随机数不能重复
int a = r.nextInt(33) + 1;
boolean b = Shuijishupanduan(red, a);
if (!b) {
red[i] = a;
i++;
}
}
//用户输入自己的号码
int[] arr = new int[6];
int[] arr1 = new int[1];
System.out.println("覃泺宇牌双色球,赢到手麻");
int n = 1;
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入你的第" + n + "个红球的号码:");
int shuru = sc.nextInt();
arr[i] = shuru;
n++;
}
System.out.println("请输入蓝球的号码:");
int B = sc.nextInt();
arr1[0] = B;
//判断红、蓝球有几个和中奖号码相同的,红球和蓝球分开统计。
int RED = xiangtong(red, arr);
int BULE = xiangtong(blue, arr1);
//根据统计的红球和蓝球相同的结果,分析所中的奖项,有普适性可以写成方法,只要输入红球和蓝球相同的个数就得结果
jiang(RED, BULE);
}
//判断随机数是否相同的方法
public static boolean Shuijishupanduan(int[] arr, int a) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == a) {
return true;
}
}
return false;
}
//判断两个数组有多少个相同的数据
public static int xiangtong(int arr1[], int arr2[]) {
int xiangtongshu = 0;
for (int i = 0; i < arr1.length; i++) {
if (arr2[i] == arr1[i]) { //双色球的号码要相同,而且还要对应的位置也相同(也就是俩数组的相同索引的数据要一样)
xiangtongshu++;
}
}
return xiangtongshu;
}
//判断奖项
public static void jiang(int r, int b) {
if (r == 6 && b == 1) {
System.out.println("恭喜你!中了一等奖,奖金1000万元!");
} else if (r == 6 && b == 0) {
System.out.println("恭喜你!中了二等奖,奖金500万元!");
} else if (r == 5 && b == 1) {
System.out.println("恭喜你!中了三等奖,奖金3000元!");
} else if ((r == 5 && b == 0) || (r == 4 && b == 1)) {
System.out.println("恭喜你!中了个四等奖,奖金200元!");
} else if ((r == 4 && b == 0) || (r == 3 && b == 1)) {
System.out.println("恭喜你!中了个五等奖,奖金10元");
} else if ((r == 2 && b == 1) || (r == 1 && b == 1) || (r == 0 && b == 1)) {
System.out.println("恭喜你!大怨种,中了六等奖,奖金5元");
}
}
}
花了我打gogo的时间,弄个双色球模拟,总体不算太难,最麻烦的部分我还是感觉是那个随机数不能重复的部分,我想了一些时间。i++放在if语句里很精髓我感觉。
我打的草稿。思路应该还是清晰的我认为。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79500.html