问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
在FinallyNumber这个方法里,int[] numbers = new int[7];//固定数组长度为7这句代码显示冗余,为什么呀
public class ExampleDemo4 {
//开发双色球系统
//双色球投注区分为红色球号码区和蓝色球号码区,红色球号码区由1-33共三十三个号码组成,蓝色球号码区由1-16共十六个号码组成。
public static void main(String[] args) {
//首先需要随机出一段7位数的号码,作为开奖号码
int[] LuckyLotteryNumber = LotteryNumber();//接收这个幸运的开奖号码
//然后要能接收用户想要的号码
FinallyNumber();
}
public static int[] FinallyNumber() {//最终号码由机选或者用户输入决定
int[] numbers = new int[7];//固定数组长度为7
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("你想要机选还是自己选择号码");
System.out.println("1.机选");
System.out.println("2.自己选");
int select = sc.nextInt();
if (select == 1) {
numbers = LotteryNumber();//机选调用随机生成号码的方法
System.out.println("机器选的号码是:");
Printf(numbers);//打印号码
break;
} else if (select == 2) {
numbers = BettingNumber();//自己选调用输入号码方法
System.out.println("你选的号码是:");
Printf(numbers);//打印号码
break;
}else
System.out.println("输入有误~~重新输入");
}
return numbers;
}
public static void Printf(int[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
}
public static int[] BettingNumber() {//用来接收用户自己选择的号码
int[] numbers = new int[7];//固定数组长度为7
Scanner sc = new Scanner(System.in);
for (int i = 0; i < numbers.length - 1; i++) {//开始循环,接收用户想买的不重复的红球号码
while (true) {
System.out.println("请输入第" + (i+1) + "个你想要的号码(红球)1-33");
int boll = sc.nextInt();//然后判断这个数字是否和前面的数字重复
boolean NotRepeat = true;//定义一个变量记录是否重复;默认不重复
for (int j = i - 1; j >= 0; j--) {
if (numbers[j] == boll | boll > 33) {
NotRepeat = false;//这里发现了错误,改为false
if (boll > 33)//判断是什么原因发生的错误,给出对应的语句
System.out.println("不能超过33呢~~重新输一次吧");
else
System.out.println("你之前买过这个号码啦~~换一个~~重新输一次吧");
break;
}
}
if (NotRepeat) {
numbers[i] = boll;
break;//满足没有错误条件,跳出循环
}
}
}
System.out.println("再输入一个蓝色球号码1-16");
int boll = 0;
while (true) {//判断输入的蓝色球号码是否符合1-16
boll = sc.nextInt();
if (boll <= 16) {
break;
} else
System.out.println("输入数字大于16~~请重新输入");
}
numbers[numbers.length - 1] = boll;
return numbers;//返回这个投注号码
}
public static int[] LotteryNumber() {//返回一个数组,里面装载开奖的每一个号码
int[] numbers = new int[7];//固定数组长度为7
Random r = new Random();
for (int i = 0; i < numbers.length - 1; i++) {//开始循环,随机一个不重复的数(红球)放到对应的数组元素里
while (true) {
int boll = r.nextInt(33) + 1;//1-33
boolean NotRepeat = true;//定义一个变量记录是否重复;默认不重复
for (int j = i - 1; j >= 0; j--) {
if (numbers[j] == boll) {
NotRepeat = false;//这里发现了重复,改为false
break;
}
}
if (NotRepeat) {//如果没有重复的,就将boll的值交给number【i】
numbers[i] = boll;
break;
}
}
}
//还需要一个蓝色的号码
numbers[numbers.length - 1] = r.nextInt(16) + 1;
return numbers;//完成返回这个数组的地址
}
}
我的解答思路和尝试过的方法
我想要达到的结果