
java的学习也来到了第三天,基础部分相信大家也已经学完了,不如来一个小型的双色球系统挑战一下自己,看基础知识掌握的如何。相信玩过彩票的读者都了解双色球系统了吧,但是为了照顾像小编一样的小白,在这里还是将双色球的概念给大家做了简短的说明,希望读者们可以根据说明自己先进行尝试,然后在对照源代码。每一个方法的构建都有详细的说明,要仔细进行阅读哦。
基础知识掌握不太好的读者们可以看向这里❥(^_-)↓↓↓
运算符、判断、循环知识点总结
数组、方法知识点总结
双色球彩票是一种基于随机数学原理的彩票游戏,参与者通过购买彩票,选择自己认为会中奖的号码组合。彩票中包含两组号码:一组红色号码(1至33共33个号码),一组蓝色号码(1至16共16个号码)。每期开奖时,从彩池中随机抽取出一组号码作为中奖号码,彩票购买者若选择的号码组合与中奖号码一致,则有机会赢得不同等级的奖金。
彩票选号:
开奖过程:
中奖规则:
随机性保证:

//判断是否重复,重复返回true,反之返回false
public static boolean contains(int []arr,int num){
for (int i = 0; i < 6; i++) {
if (arr[i] == num){
return true;
}
}
return false;
}循环遍历:
for (int i = 0; i < 6; i++) { if (arr[i] == num) { return true; } }
for 循环遍历数组 arr 的前 6 个元素(索引从 0 到 5)。arr 的第 i 个元素是否等于 num。num,立即返回 true,表示找到了重复元素。未找到情况:
return false;
num 相等的元素,则返回 false。num 相同的元素,即没有重复。num。num 相同的元素,则返回 true;如果数组中不存在 num,则返回 false。注:该方法主要是为了防止红球的数字重复
//中奖的号码
public static int[] creatnum(){
int[] arr = new int[7];//用于存放号码
Random random = new Random();
for (int i = 0; i < 6;) {//生成6个红球
int rednum = random.nextInt(33)+1;
boolean flag = contains(arr,rednum);
if(!flag){
arr[i] = rednum;
i++;
}
}
int bluenum = random.nextInt(10)+1;
arr[6]=bluenum;
return arr;
}注:生成随机数的时候别忘了头文件的调用
初始化数组和随机数生成器:
int[] arr = new int[7]; // 创建一个长度为 7 的整型数组,用于存放号码
Random random = new Random(); // 创建一个随机数生成器
生成红色号码:
for (int i = 0; i < 6;) { // 循环生成 6 个红色号码
int rednum = random.nextInt(33) + 1; // 生成一个随机数作为红色号码,范围是 1 到 33
boolean flag = contains(arr, rednum); // 调用 contains 方法判断生成的号码是否已经存在于数组中
if (!flag) { // 如果号码不重复
arr[i] = rednum; // 将号码存入数组中
i++; // 继续生成下一个号码
}
}for 循环中,生成一个随机数 rednum,范围是 1 到 33。contains 方法检查数组 arr 中是否已经包含了这个随机生成的红色号码。rednum 不重复,则将它存入数组 arr 中的当前位置 i,并递增 i。生成蓝色号码:
int bluenum = random.nextInt(16) + 1; // 生成一个随机数作为蓝色号码,范围是 1 到 16 arr[6] = bluenum; // 将蓝色号码存入数组的最后一个位置(索引为 6)
bluenum,范围是 1 到 16,作为蓝色号码。arr 的最后一个位置(索引为 6)。返回结果:
return arr; // 返回包含 6 个红色号码和 1 个蓝色号码的整型数组
arr,其中包含了生成的 6 个红色号码和 1 个蓝色号码。//用户购买的彩票号码
public static int[] usernum(){
int[] arr = new int[7];//用于存放号码
//用户输入红球
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 6;) {
System.out.println("请输入第"+(i+1)+"个红球号码");
int rednum = sc.nextInt();
//判断是否处于正常范围
if(rednum>=1 && rednum<=33){
boolean flag = contains(arr,rednum);
if(!flag){//不存在
arr[i]=rednum;
i++;
}else {
System.out.println("当前红球号码已经存在,请重新输入");//存在
}
}else {
System.out.println("当前红球号码超出范围");
}
}//输入篮球号码
System.out.println("请输入篮球号码");
while(true){
int bluenum = sc.nextInt();
if(bluenum>=1 && bluenum<=16) {
arr[6]=bluenum;
break;
}else {
System.out.println("当前篮球号码超出范围");
}
}
return arr;
}初始化数组和输入对象:
int[] arr = new int[7]; // 创建一个长度为 7 的整型数组,用于存放用户输入的号码
Scanner sc = new Scanner(System.in); // 创建一个 Scanner 对象,用于接收用户输入
用户输入红色号码:
for (int i = 0; i < 6;) { // 循环接收 6 个红色号码
System.out.println("请输入第" + (i + 1) + "个红球号码");
int rednum = sc.nextInt(); // 接收用户输入的红色号码
if (rednum >= 1 && rednum <= 33) { // 判断号码是否在合法范围内
boolean flag = contains(arr, rednum); // 调用 contains 方法检查号码是否重复
if (!flag) { // 如果号码不重复
arr[i] = rednum; // 将号码存入数组
i++; // 继续接收下一个号码
} else {
System.out.println("当前红球号码已经存在,请重新输入"); // 如果号码重复,提示用户重新输入
}
} else {
System.out.println("当前红球号码超出范围"); // 如果号码超出合法范围,提示用户重新输入
}
}for 循环中,提示用户输入每一个红色号码,并接收用户输入。if 条件判断用户输入的红色号码是否在 1 到 33 的范围内。contains 方法检查数组 arr 中是否已经包含了该号码,确保号码不重复。arr 中的当前位置 i,并递增 i;否则提示用户重新输入或超出范围。用户输入蓝色号码:
System.out.println("请输入篮球号码");
while (true) {
int bluenum = sc.nextInt(); // 接收用户输入的蓝色号码
if (bluenum >= 1 && bluenum <= 16) { // 判断号码是否在合法范围内
arr[6] = bluenum; // 将蓝色号码存入数组的最后一个位置(索引为 6)
break; // 结束循环,蓝色号码输入完成
} else {
System.out.println("当前篮球号码超出范围"); // 如果号码超出合法范围,提示用户重新输入
}
}while 循环确保用户输入的蓝色号码在 1 到 16 的范围内。arr 的最后一个位置(索引为 6),并结束循环。返回结果:
return arr; // 返回包含用户输入的 6 个红色号码和 1 个蓝色号码的整型数组
arr,其中包含了用户输入的 6 个红色号码和 1 个蓝色号码。//3.判断用户中奖情况
int redcount = 0;
int bluecount = 0;
//判断红球
for (int i = 0; i < userinputnum.length - 1; i++) {
int rednum = userinputnum[i];
for (int j = 0; j < userinputnum.length - 1; j++) {
if (rednum == arr[j]) {
redcount++;
break;
}
}
}
//判断篮球
int bluenum = userinputnum[userinputnum.length - 1];
if (bluenum == arr[userinputnum.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("恭喜您中奖200元");
}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元");
}初始化中奖号码计数器:
int redcount = 0;
int bluecount = 0;
redcount 用于计算用户选择的红色号码中与中奖号码匹配的数量。bluecount 用于计算用户选择的蓝色号码是否与中奖号码匹配。判断红球号码是否中奖:
for (int i = 0; i < userinputnum.length - 1; i++) {
int rednum = userinputnum[i]; // 获取用户选择的第 i 个红色号码
for (int j = 0; j < userinputnum.length - 1; j++) {
if (rednum == arr[j]) { // 检查用户选择的红色号码是否与中奖号码数组中的任何一个匹配
redcount++; // 如果匹配,则增加红色号码中奖计数
break; // 跳出内部循环,因为已经找到了匹配的号码
}
}
}arr,检查用户选择的红色号码是否在中奖号码中。redcount 计数,并且跳出内部循环。判断蓝球号码是否中奖:
for (int i = 0; i < userinputnum.length - 1; i++) {
int rednum = userinputnum[i]; // 获取用户选择的第 i 个红色号码
for (int j = 0; j < userinputnum.length - 1; j++) {
if (rednum == arr[j]) { // 检查用户选择的红色号码是否与中奖号码数组中的任何一个匹配
redcount++; // 如果匹配,则增加红色号码中奖计数
break; // 跳出内部循环,因为已经找到了匹配的号码
}
}
}arr 中的蓝色号码匹配。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("恭喜您中奖200元");
} 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元");
}redcount 和 bluecount 的值,判断用户是否中奖,并输出相应的中奖信息。package day3;
import java.util.Random;
import java.util.Scanner;
public class system1 {
public static void main(String[] args) {
//练习13:双色球系统
//需求:输出所获奖项及其奖金
//规则:号码由六个红球和一个篮球组成,红球号码1-33,篮球1-16.
//1.生成中奖号码
int[] arr = creatnum();
//2.用户输入彩票号码
int[] userinputnum = usernum();
//3.判断用户中奖情况
int redcount = 0;
int bluecount = 0;
//判断红球
for (int i = 0; i < userinputnum.length - 1; i++) {
int rednum = userinputnum[i];
for (int j = 0; j < userinputnum.length - 1; j++) {
if (rednum == arr[j]) {
redcount++;
break;
}
}
}
//判断篮球
int bluenum = userinputnum[userinputnum.length - 1];
if (bluenum == arr[userinputnum.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("恭喜您中奖200元");
}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元");
}
}
//用户购买的彩票号码
public static int[] usernum(){
int[] arr = new int[7];//用于存放号码
//用户输入红球
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 6;) {
System.out.println("请输入第"+(i+1)+"个红球号码");
int rednum = sc.nextInt();
//判断是否处于正常范围
if(rednum>=1 && rednum<=33){
boolean flag = contains(arr,rednum);
if(!flag){//不存在
arr[i]=rednum;
i++;
}else {
System.out.println("当前红球号码已经存在,请重新输入");//存在
}
}else {
System.out.println("当前红球号码超出范围");
}
}//输入篮球号码
System.out.println("请输入篮球号码");
while(true){
int bluenum = sc.nextInt();
if(bluenum>=1 && bluenum<=16) {
arr[6]=bluenum;
break;
}else {
System.out.println("当前篮球号码超出范围");
}
}
return arr;
}
//中奖的号码
public static int[] creatnum(){
int[] arr = new int[7];//用于存放号码
Random random = new Random();
for (int i = 0; i < 6;) {//生成6个红球
int rednum = random.nextInt(33)+1;
boolean flag = contains(arr,rednum);
if(!flag){
arr[i] = rednum;
i++;
}
}
int bluenum = random.nextInt(10)+1;
arr[6]=bluenum;
return arr;
}
//判断是否重复,重复返回true,反之返回false
public static boolean contains(int []arr,int num){
for (int i = 0; i < 6; i++) {
if (arr[i] == num){
return true;
}
}
return false;
}
}