java案例之制作系统
案例
需求
- 定义一个方法,可以接收中奖号码的数组,用户选号的数组;
- 根据命中红球数和篮球数判断最终的结果并输出。
分析
- 系统需要三部份
- 第一部分是:生成随机产生的7位数双色球数字,其中前6位是红球,第7位是蓝球,红球范围是1–33,蓝球范围是1–16,产生随机数的方法Random.,注意这里我们需要返回数组,红球与蓝球应该分别随机生成赋值,其中的小技巧为参照数flage。
局部代码:
// 随机生成一组号码
public static int[] lucknum(){
Random r = new Random();
Scanner sc = new Scanner(System.in);
int[] arr1 = new int[7];
// 先遍历前6个红球;
for (int i = 0; i < arr1.length-1; i++) {
while (true){
int num = r.nextInt(33)+1; // 1--33,(0--32)+1
boolean flage = true;
for (int j = 0; j < i; j++) {
if(arr1[j] == num){
flage = false;
break;
}
}
if(flage){
arr1[i] = num;
break;
}
}
}
arr1[arr1.length-1] = r.nextInt(16)+1; // 蓝球是 1-16
return arr1;
}
再定义了方法后,我们写一个数组遍历输出方法去输出数组,看一下数组的情况。
- 输出数组的程序方法如下:
public static void printArray(int[] arr){
System.out.print("(");
for (int i = 0; i < arr.length; i++) {
if(i == arr.length - 1){
System.out.print(arr[i]+")");
}else {
System.out.print(arr[i]+";");
}
}
}
- 下面我们要写一个可以手动输入7位获奖位数的方法,类型和方法1有点类似,也是以数组的格式输出
public static int[] uernum(){
Scanner sc = new Scanner(System.in);
int[] num = new int[7];
for (int i = 0; i < 6; i++) {
System.out.print("请输入1--33之间不重复的红球号码:");
int uernum = sc.nextInt();
num[i] = uernum;
}
System.out.print("请输入1--16之间的蓝球号码:");
num[num.length-1] = sc.nextInt();
System.out.print("您输入的双色球号码是:");
printArray(num);
return num;
}
- 再生成随机生成的7位中奖号码与手动输入的7位猜测号码,后面我们需要遍历两个数组去判断猜中了多少红球与蓝球,以便于去判断中奖情况。
public static void judge(int[] arr1,int[] arr2){
int red = 0;
int blue = 0;
for (int i = 0; i < arr2.length-1; i++) {
for (int j = 0; j < arr1.length-1; j++) {
if(arr2[i]==arr1[j]){
red += 1;
break;
}
}
}
blue = arr1[arr1.length-1] == arr2[arr2.length-1] ? 1:0;
System.out.println();
System.out.print("您猜中的红球个数是:"+red);
System.out.println();
System.out.print("您是否猜中篮球:"+(blue==1));
System.out.println();
if (red ==1 && blue==1 || red ==2 && blue==1 || red==0 && blue==1){
System.out.println("恭喜您中5元。");
}else if(red==3 && blue==1 || red==4&&blue==0){
System.out.println("恭喜您中10元。");
}else if (red==4 && blue==1 ||red==5&& blue==0){
System.out.println("恭喜您中200元。");
}else if(red==5 && blue==1){
System.out.println("恭喜您中3000元。");
}else if(red ==6 && blue==0){
System.out.println("恭喜您中500万。");
}else if(red == 6 && blue==1){
System.out.println("恭喜您中1000万。");
}else {
System.out.println("#############");
}
}
完整代码:
package 编程思维训练;
import java.util.Scanner;
import java.util.Random;
public class ten {
public static void main(String[] args) {
int[] lucknum = lucknum();
System.out.println("luck num:");
printArray(lucknum);
System.out.println();
int[] uernum = uernum();
judge(lucknum,uernum);
}
// 随机生成一组中奖号码
public static int[] lucknum(){
Random r = new Random();
Scanner sc = new Scanner(System.in);
int[] arr1 = new int[7];
// 先遍历前6个红球;
for (int i = 0; i < arr1.length-1; i++) {
while (true){
int num = r.nextInt(33)+1; // 1--33,(0--32)+1
boolean flage = true;
for (int j = 0; j < i; j++) {
if(arr1[j] == num){
flage = false;
break;
}
}
if(flage){
arr1[i] = num;
break;
}
}
}
arr1[arr1.length-1] = r.nextInt(16)+1; // 蓝球是 1-16
return arr1;
}
public static void printArray(int[] arr){
System.out.print("(");
for (int i = 0; i < arr.length; i++) {
if(i == arr.length - 1){
System.out.print(arr[i]+")");
}else {
System.out.print(arr[i]+";");
}
}
}
public static int[] uernum(){
Scanner sc = new Scanner(System.in);
int[] num = new int[7];
for (int i = 0; i < 6; i++) {
System.out.print("请输入1--33之间不重复的红球号码:");
int uernum = sc.nextInt();
num[i] = uernum;
}
System.out.print("请输入1--16之间的蓝球号码:");
num[num.length-1] = sc.nextInt();
System.out.print("您输入的号码是:");
printArray(num);
return num;
}
public static void judge(int[] arr1,int[] arr2){
int red = 0;
int blue = 0;
for (int i = 0; i < arr2.length-1; i++) {
for (int j = 0; j < arr1.length-1; j++) {
if(arr2[i]==arr1[j]){
red += 1;
break;
}
}
}
blue = arr1[arr1.length-1] == arr2[arr2.length-1] ? 1:0;
System.out.println();
System.out.print("您猜中的红球个数是:"+red);
System.out.println();
System.out.print("您是否猜中篮球:"+(blue==1));
System.out.println();
if (red ==1 && blue==1 || red ==2 && blue==1 || red==0 && blue==1){
System.out.println("恭喜您中5元。");
}else if(red==3 && blue==1 || red==4&&blue==0){
System.out.println("恭喜您中10元。");
}else if (red==4 && blue==1 ||red==5&& blue==0){
System.out.println("恭喜您中200元。");
}else if(red==5 && blue==1){
System.out.println("恭喜您中3000元。");
}else if(red ==6 && blue==0){
System.out.println("恭喜您中500万。");
}else if(red == 6 && blue==1){
System.out.println("恭喜您中1000万。");
}else {
System.out.println("############");
}
}
}
实验结果
参考
黑马程序员