努力学习的小栋
2022-03-23 21:14
采纳率: 100%
浏览 38
已结题

Java数组在idea里提示冗余问题

该问题来自于m0_63057596的博客_CSDN博客

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
在FinallyNumber这个方法里,int[] numbers = new int[7];//固定数组长度为7这句代码显示冗余,为什么呀

img

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;//完成返回这个数组的地址
    }
}

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题