编写程序,能够让用户录入一注双色球彩票;也可以随机产生一注双色球彩票(机选),最后根据生成的双色球判断是否中奖,如果中奖,输出中奖金额。
package com.itheima.method.practice;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class DoubleColorBall {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int[] rewordNumber = randomNubmer();
System.out.println("你想要自选还是机选:(1.自选 2.机选)");
int chose = sc.nextInt();
switch (chose) {
case 1:
int[] selectNumber = selectNumber();
batterArrays(selectNumber, rewordNumber);
break;
case 2:
int[] randomNumber = randomNubmer();
batterArrays(randomNumber, rewordNumber);
break;
default:
System.out.println("输入错误");
break;
}
}
//结算奖金
public static void batterArrays(int[] selectNumber, int[] randomNumber) {
int count1 = 0;
int count2;
int reward;
for (int i = 0; i < 6; i++) {
for(int j=0;j<6;j++){
if (selectNumber[i] == randomNumber[j]) count1++;
}
}
if (selectNumber[6] == randomNumber[6]) count2 = 1;
else count2 = 0;
switch (count1) {
case 1:
reward = 5;
break;
case 2:
case 3: {
if (count2 == 1) reward = 10;
else reward = 0;
}
break;
case 4: {
if (count2 == 1) reward = 200;
else reward = 10;
}
break;
case 5: {
if (count2 == 1) reward = 3000;
else reward = 200;
}
break;
case 6: {
if (count2 == 1) reward = 100000;
else reward = 5000000;
}
break;
default:
reward = 0;
break;
}
System.out.println("你的奖金为: " + reward);
}
//自选号码
public static int[] selectNumber() {
int[] arrays = new int[7];
System.out.println("请输入你选择的号码:");
for (int i = 0; i < 6; i++) { //for循环嵌套while循环,在for循环中只有当while中的判断语句为true时才会跳出循环,因此加入判断条件当num的数值合理的时候才会进入第三段将isVaild修改为true
System.out.println("请输入第" + (i + 1) + "个的号码");
int num;
boolean isValid = false;
while (!isValid) {
num = sc.nextInt();
if (num > 33 || num < 0) {
System.out.println("请重新输入");
} else if (contain(num, arrays)) {
System.out.println("输入错误,请重新输入");
} else {
arrays[i] = num;
isValid = true;
}
}
}
System.out.println("请输入第7个数字:");
arrays[6] = sc.nextInt();
return arrays;
}
public static int[] randomNubmer() {
Random r = new Random();
int[] arrays = new int[7];
int num;
for (int i = 0; i < 6; i++) {
do {
num = r.nextInt(33);
//判断生成数组中的随机数是否与之前的数据有无相同
}
while (contain(num, arrays));
arrays[i] = num;
}
arrays[6] = r.nextInt(16) + 1;
System.out.println("中奖号码为:" + Arrays.toString(arrays));
return arrays;
}/*if(i:arrays)加强版for each循环,for(int i:arrays)将数组中的元素分别赋值给i
*/
//num用来获取随机数,如将arrys数组内的内容循环赋值给i,检测数组内的内容无与i相同项目时,返回true
//并在上个获取随机号的方法中调用该方法,当num不与数组内的内容有相等项的时候将num赋值给arrays【i】
public static boolean contain(int num, int[] arrays) {
for (int i : arrays) {
if (i == num) return true;
}
return false;
}
}