package com.ningts.hello;
import java.util.Random;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
int[] setNo = noAsc(setNo());
noPrint(setNo, "排序set");
int[] getNo = noAsc(getNo());
noPrint(getNo, "排序get");
checkRes(getNo, setNo);
}
public static int[] getNo() {
//获取录入的数据
int[] getNo = new int[7];
for (int i = 0; i < getNo.length - 1; i++) {
while (true) {
System.out.println("-------请录入第" + (i + 1) + "个红球-------");
Scanner sc = new Scanner(System.in);
int redNo = sc.nextInt();
if (ckRed(getNo, redNo) == "正确") {//调用验证方法,判断是否符合要求
getNo[i] = redNo;
break;//如果此次数据符合要求,数据存入数组,本次while结束
} else {
System.out.println(ckRed(getNo, redNo));//while不结束,继续循环下一次
}
}
}
while (true) {
System.out.println("-------录入蓝球-------");
Scanner sc = new Scanner(System.in);
int blueNo = sc.nextInt();
if (ckBlue(blueNo) == "正确") {
getNo[getNo.length - 1] = blueNo;
break;
} else {
System.out.println(ckBlue(blueNo));
}
}
noPrint(getNo, "原始get");
return getNo;
}
public static int[] setNo() {
//设置中奖的号码,随机出一组数据
Random r = new Random();
int[] setNo = new int[7];
//红球
for (int i = 0; i < setNo.length - 1; i++) {
//随机一个范围内红球,放入数组
while (true) {
int redBall = r.nextInt(33) + 1;
boolean f = true;
for (int j = 0; j < i; j++) {
if (redBall == setNo[j]) {
f = false;
break;
}
}
if (f) {
setNo[i] = redBall;
break;
}
}
}
//篮球,直接随机即可
setNo[setNo.length - 1] = r.nextInt(16) + 1;
noPrint(setNo, "原始set");
return setNo;
}
public static void checkRes(int[] gets, int[] sets) {
//检查中奖结果
int red = 0;
int blue = 0;
for (int i = 0; i < gets.length - 1; i++) {
for (int j = 0; j < sets.length - 1; j++) {
if (gets[i] == sets[j]) {
red++;
}
}
}
if (gets[gets.length - 1] == sets[sets.length - 1]) {
blue++;
}
String res = "命中:"+red+"+"+blue+",";
if (red == 6 && blue == 1) {
res += "一等奖";
} else if (red == 6 && blue == 0) {
res += "二等奖";
} else if (red == 5 && blue == 1 || red == 6 && blue == 0) {
res += "三等奖";
} else if (red == 5 && blue == 0 || red == 4 && blue == 1) {
res += "四等奖";
} else if (red == 4 && blue == 0 || red == 3 && blue == 1) {
res += "五等奖";
} else if (red == 2 && blue == 1 || red == 1 && blue == 1 || red == 0 && blue == 1) {
res += "六等奖";
} else {
res += "未中奖";
}
noPrint(sets,"开奖号码");
noPrint(gets,"你的号码");
System.out.println(res);
}
public static int[] noAsc(int[] nos) {
//排序,只需排前六个即可
int tmp = 0;
for (int i = 0; i < nos.length - 2; i++) {
for (int j = 0; j < nos.length - i - 2; j++) {
if (nos[j] > nos[j + 1]) {
tmp = nos[j + 1];
nos[j + 1] = nos[j];
nos[j] = tmp;
}
}
}
return nos;
}
public static void noPrint(int[] arr, String note) {
//打印显示对应信息
System.out.println("**********" + note + "**********");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
}
public static String ckRed(int[] arr, int redNo) {
//检查红球的是否符合要求
String rs = "正确";
if (redNo > 0 && redNo <= 33) {//先判断是否符合数据区间要求
for (int i = 0; i < arr.length-1; i++) {//循环判断是否已经存在,判断前六位即可
if (arr[i] == redNo) {
rs = "error--->红球不能重复,请重新输入";
}
}
} else {
rs = "error--->红球应该在1-33之间,请重新输入";
}
return rs;
}
public static String ckBlue(int blueNo) {
//检查蓝球的是否符合要求
String rs = "正确";//默认是正确的
if (blueNo <= 0 || blueNo > 16) {
rs = "error--->蓝球应该在1-16之间,请重新输入";
}
return rs;
}
}
java入门-双色球
最新推荐文章于 2024-09-14 21:48:00 发布