掌握心灵阵列

时间:2017-04-16 01:17:29

标签: java arrays

我目前正在开展一个学校项目,其中的任务是使用数组和循环重新创建游戏“MasterMind”,但是,我很难正确地添加白钉的数量,而且我得到了一个像这样输出。

4
7
2
1
What is your guess? No spaces
4444
there are 1 reds, and 2 whites

正如您所看到的,它错误地输出了错误数量的白钉。我的问题的任何建议和/或解决方案将不胜感激。

public static void MasterMind(){
        Scanner input = new Scanner(System.in);
        Random r = new Random();
        int red = 0, white = 0;
        int ball;
        int userInput;
        int[] ballNum;
        ballNum = new int[4];
        int[] Input;
        Input = new int[4];
        ball = r.nextInt(9999-1000)+1000;
        for (int i = 0; i < 4; i++){
            ballNum[i] = ball%10;
            ball /= 10;
            System.out.println(ballNum[i]);
        }
        for (int d = 0; d < 8; d++){
            System.out.println("What is your guess? No spaces");
            userInput = input.nextInt();
            for(int i = 0; i < 4; i++){
                Input[i] = userInput % 10;
                userInput /= 10;
            }
            for (int i = 0; i < 4; i++){
                int m = 0;
                int n = 0;
                if(Input[i] == ballNum[i]){
                    red++;
                    Input[i] = 10000;
                }
                m++;
                n++;
            }
            for(int i = 0; i < 4; i++){
                for(int j = 0; j < 4; j++){
                    if(i != j && Input[j] == ballNum[i]){
                        white++;
                        Input[j] = 1000000;
                    }
                }
            }
            white -= red;

            if(white < 0){
                white = 0;
            }
            System.out.println("there are "+red+" reds, and "+white+" whites");
            white = 0;
            red = 0;
        }
    }

1 个答案:

答案 0 :(得分:0)

主要问题在于您的循环,其中用户输入转换为数组。你做错了。用以下代码替换该循环。

for(int i = 3; i >=0; i--){
    Input[i] = userInput % 10;
        userInput /= 10;
}

另一个重要的事情是你为什么从白色中减去红色?只需删除该行

        white -= red;

然后你的程序运行正常