Mastermind 主游戏循环无限循环输入问题

问题描述 投票:0回答:1
 public static void main(String[] args) {

        //Implement your game here.

        //INSTRUCTIONS
        System.out.println("Welcome to the game Mastermind!");
        System.out.println("The objective of this game is to crack the secret code within a limited number of attempts");
        System.out.println("The code is made up of 4 digits and consists of digits ranging from 0-9");
        System.out.println("You will have unlimited attempts to try and guess the code.");
        System.out.println("Good luck and have fun!");

        mainloop();
    }//game implementation

    //add any additional desired methods here

    public static void errors() {
    //RAISE ERRORS HERE
    }//end of error loop




    public static void mainloop() {

        //Create a Randoom array of 4 values
        Random rd = new Random();
        int[] code4 = new int[4]; 
        for (int ii = 0; ii < code4.length; ii++) {
            code4[ii] = rd.nextInt(10);
            System.out.print(code4[ii]);
        }// end of for loop
        
        //Get user input and turn into an array
        Scanner scanner = new Scanner(System.in);
            int array_size = 4;
            int[] array = new int[array_size]; 
            boolean is_true = false;
            
            while (!is_true) {
                for (int ii = 0; ii < array_size; ii++) {
                System.out.println("Enter 4 digits of number!");
                array[ii] = scanner.nextInt();
                } 
                is_true = Arrays.equals(code4, array);

                if (is_true) {
                    System.out.println("You got it correct");
                } else {
                    System.out.println("Try again!");
                }
            }//end of while loop
        //end of scanner
    }//end main loop

}//end class

我正在做一项任务,我们必须重新创建游戏《Mastermind》。计算机将为用户提供一个随机的 4 位数字,该数字以数组形式给出。用户不知道该数字,必须猜测该数字。 (请注意,我打印随机数是为了进行故障排除。稍后会将其删除)

在主循环中,我获取用户输入并将该输入存储到包含 4 个值的数组中。我创建了一个布尔值 is_true 来确定随机生成的“代码”是否与用户输入相同。虽然用户输入的代码与计算机的代码不相等,但它会不断提示用户输入 4 位数字。但是,我的代码不断提示用户“输入 4 位数字”,并且从不移至 while 循环下方的 if/else 语句。我不确定我的逻辑哪里出了问题。即使我写了打印的正确的 4 位数字,shell 似乎也无法识别 array.equals(code4, array)。

非常感谢任何有关我为何陷入无限提示用户循环的帮助或解释。

我尝试重新排列不同语句在 while 循环中出现的顺序。我还尝试通过编写 is_true = Arrays.equals(code4, array); 来进行故障排除在 while 循环的末尾,然后将其移动到 while 循环的嵌套结构中。但是,我认为我的代码没有达到这种条件。

java arrays while-loop nested-loops
1个回答
0
投票

因此,据我所知,您并未将用户的输入值与 4 位代码进行比较。首先尝试进行一些步骤调试(就像我在下面所做的那样),然后看看如何修改代码。

© www.soinside.com 2019 - 2024. All rights reserved.