私は牛や雄牛のようなJavaゲームをやっています。ただし、「Cow」と「Bull」を表示する代わりに、「MOO」または「moo」を表示します。4桁の数字が生成され、ユーザーはそれを推測できます。正しく指定された桁(同じ番号、同じ位置)ごとに、画面に「MOO」が表示されます。同じ番号であるが位置が間違っていると推測される各桁に対して、「moo」が表示されます。返される「moo」の数を返すメソッドを実行するのに問題があります。
public int getLittleMooCount(int guess)
{
int count = 0;
String guessString = Integer.toString(guess);
String randomValueString = Integer.toString(randomValue);
// Pads the number with zero if less than 4 digits, so length is always 4
while(guessString.length() < 4)
{
guessString = "0" + guessString;
}
while(randomValueString.length() < 4)
{
randomValueString = "0" + randomValueString;
}
// checking to see if positions EXACTLY match. If so, it would return a MOO (the getBigMoo
// Count is in my other method)
for (int i = 0; i < 4; i++)
{
if (guessString.charAt(i) == randomValueString.charAt(i))
{
randomValueString = randomValueString.replace(randomValueString.charAt(i), 'X');
guessString = guessString.replace(guessString.charAt(i), 'O');
}
}
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (guessString.charAt(j) == randomValueString.charAt(i))
{
count++;
randomValueString = randomValueString.replace(randomValueString.charAt(i), 'X');
guessString = guessString.replace(guessString.charAt(j), 'O');
}
}
}
return count;
}
- テスト用の入力
- 0011
- 2233
- 4455
- 6677
- 8899
- 1234
- 5678
- 9090
そして、5509の乱数を使用した結果
- 1moo=正解
- 何もない=正しい
- 1 moo =間違っています!2つのモーである必要があります。
- 何もない=正しい
- 1MOO=正解
- 何もない=正しい
- 1MOO=正解
- 2moo=正解
一部の数値では機能するように見えますが、他の数値では、常に1つの間違ったテストデータがあります。明らかに、何かが間違っていますが、私はすべてを試しました、そしてそれはイライラします!役立つ場合は、別の例を投稿できます。
よろしくお願いします!
編集:申し分なく、私はそれを文字配列に変更しました、そして今それは何もしません。私はこれを正しくやったと誓うことができました。
int count = 0;
String guessString = Integer.toString(guess);
String randomValueString = Integer.toString(randomValue);
char [] randomValueCharacter = randomValueString.toCharArray();
char [] guessCharacter = guessString.toCharArray();
while(guessString.length() < 4)
{
guessString = "0" + guessString;
}
while(randomValueString.length() < 4)
{
randomValueString = "0" + randomValueString;
}
for (int i = 0; i < 4; i++)
{
if (guessString.charAt(i) == randomValueString.charAt(i))
{
randomValueCharacter[i] = 'X';
guessCharacter[i] = 'O';
}
}
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (guessString.charAt(j) == randomValueString.charAt(i))
{
count++;
randomValueCharacter[i] = 'X';
guessCharacter[j] = 'O';
}
}
}
return count;
}