現在、Javaコースでは、首謀者のようなゲームを作成しようとしています。このゲームでは、4桁の乱数が生成され、ユーザーはその数を推測しようとします。推測するたびに、コンピューターは正しい桁の数が正しい順序であり、正しい桁の数が間違った順序であると述べます。
何らかの理由で、すべてがこのプログラムの私のバイナリ検索まで機能します。これは本当にプログラムの中心です。私はそれを微調整するのに何時間も費やしました、そして私はまだそれを得ることができません。何か案は?
この例では、9935を推測しようとしていますが、これは乱数ではないことがわかります。
本当にありがとう!
編集:このプログラムを実行して推測「9875」を使用すると、正しい結果が得られません。
私が見つける必要がある推測と結果は次のとおりです。
4桁の数字を入力してください:9874
正しい桁数ですが、間違った場所にあります:0
適切な場所の正しい桁数:1
4桁の数字を入力してください:9899
正しい桁数ですが、間違った場所にあります:1
適切な場所の正しい桁数:1
4桁の数字を入力してください:9593
正しい桁数ですが、間違った場所にあります:3
適切な場所の正しい桁数:1
4桁の数字を入力してください:9935
正しい桁数ですが、間違った場所にあります:0
適切な場所の正しい桁数:4
あなたは正しいです!
public class Mastermind {
public static void main(String[] args) {
Random randomGenerator = new Random();
Scanner input = new Scanner(System.in);
int randomNumber = 9935;
int[] randomArray = new int[4];
int temp = randomNumber;
for (int i = 3; i >= 0; i--){
int n = temp%10;
randomArray[i] = n;
temp /= 10;
}
boolean found = false;
while (found == false){
System.out.print(Arrays.toString(randomArray));
int[] guessArray = new int[4];
System.out.print("Please enter a four-digit number: ");
int guessTemp = input.nextInt();
for (int i = 3; i >= 0; i--){
int n = guessTemp%10;
guessArray[i] = n;
guessTemp /= 10;
}
if (Arrays.equals(randomArray, guessArray)){
System.out.println("You are correct!");
found = true;
} else {
int numberRightRight = 0;
int numberRightWrong = 0;
int indexFound = 0;
for(int i = 0; i < guessArray.length; i ++){
System.out.println(randomArray[i]);
indexFound = Arrays.binarySearch(guessArray, randomArray[i]);
System.out.println(indexFound);
if (indexFound >= 0){
if(indexFound == i){
numberRightRight++;
} else {
numberRightWrong++;
}
}
}
System.out.println("The number of correct digits but in the wrong place: " + numberRightWrong);
System.out.println("The number of correct digits in the right place: " + numberRightRight);
}
}
}