我目前正在开展一个学校项目,其中的任务是使用数组和循环重新创建游戏“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;
}
}
答案 0 :(得分:0)
主要问题在于您的循环,其中用户输入转换为数组。你做错了。用以下代码替换该循环。
for(int i = 3; i >=0; i--){
Input[i] = userInput % 10;
userInput /= 10;
}
另一个重要的事情是你为什么从白色中减去红色?只需删除该行
white -= red;
然后你的程序运行正常