(解题思路)双色球案例
本题是本人自己第一次做双色球任务的思路和做法,以及代码后面也有我在上课时,老师也给我们一些分享心得我也想通过我的博客来和大家分享,如果我有什么做得不足的地方或者说错的地方希望各位大佬们能在评论区给我一个评价并且给与我更多的建议。
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class twoColorBall {
//双色球
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//先设置红球为red,下标为6。
int[]red = new int[6];
//设置蓝球为blue,因为只有一个数,设0默认即可。
int blue = 0;
//设选中球的变量分别是redzj,和bluezj
int redzj = 0;
int bluezj = 0;
//将redBall的数组,blueBall的数组显示出来
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};
int blueBall = 0;
//获得系统随机变量
Random sj = new Random();
//使random不会重复产生同一个数
for(int i=0;i<red.length;i++) {
//设置index(下标)为0
int index = 0;
while(true) {
//把下标赋值33
index = sj.nextInt(33);
if(redBall[index]>=0){
//查看对应的红球和中奖的红球
red[i]=redBall[index];
//直到红球对完为止
redBall[index] = -1 ;
break;
}
}
}
//随机生成一个蓝球
blue = (sj.nextInt(16)+1);
System.out.println("请输入红球号码(1-33)不能重复:");
//定义一个数组,存放用户生成自己选择的6个红色球号码
int[] userRedBall = new int[6];
//定义一个整数,存放用户生成自己选择的蓝色球号码
int userBlueBall = 0;
for(int i=0;i<userRedBall.length;i++) {
userRedBall[i] = input.nextInt();
}
System.out.println("请选择蓝色球号码,1-16之间选,选1次");
userBlueBall = input.nextInt();
//判断是否中奖
for(int i=0;i<red.length;i++) {
for(int j=0;j<userRedBall.length;j++) {
if(red[i]==userRedBall[j]){
redzj++;
}
}
}
if(blue==userBlueBall) {
bluezj++;
}
//显示中奖情况
if((redzj==6) && (bluezj==1)) {
System.out.println("恭喜你中了一等奖");
}else if(redzj==6 && bluezj==0) {
System.out.println("恭喜你中了二等奖");
}else if(redzj==5 && bluezj==1) {
System.out.println("恭喜你中了三等奖");
}else if((redzj==5 && bluezj==0) || (redzj==4 && bluezj==1)) {
System.out.println("恭喜你中了四等奖");
}else if((redzj==4 && bluezj==0) || (redzj==3 && bluezj==1)) {
System.out.println("恭喜你中了五等奖");
}else if((redzj==2 && bluezj==1) || (redzj==1 && bluezj==1) || redzj==0) {
System.out.println("恭喜你中了六等奖");
}else {
System.out.println("很遗憾,你没有中奖");
}
//将系统开的中奖号码和用户选择的彩票号码输出来
System.out.println("本期开奖红球号码:" + Arrays.toString(red) + "蓝球号码" + blue);
System.out.println("用户选择红球号码:" + Arrays.toString(userRedBall) + "蓝球号码" + userBlueBall);
}
}
这里开头时创建了6组变量,我这边老师给我的点评是最好不要开头先创造一堆数组,然后再想怎么去做,我需要的是一个模块一个模块编程去做,当然老师给我这想法是没错的,因为我做这题的时候我真花了很长一段时间去做,做的时候逻辑也很难理清,尤其是if else那里,那里太多的关系也很可能回导致结果出bug,这个是一个很致命的问题,通常做判断复杂的话最好就用switch去解决而不是if else这种方式。不过通过上周的老师和同学给我的建议,这是我最大的荣幸,因为这会让我走少很多弯路,而且也让我更深的了解自己所学习的内容。通过上周的会议,我总结了这一次的经验是:如果想要学好java,你必须看多些不同人的解题方式,然后去学习别人的解题思路,拓展自己的思路,方可让代码敲得更轻松。最后我要谢谢大家观看至此,欢迎大家给我更多得建议与评价,谢谢!