这是一款生成随机4位数字的游戏,然后让用户输入5次猜测游戏的机会,并返回一个提示,说明在正确的位置有多少数字以及有多少匹配但是在错误的地方。
我在比较两个字符串时遇到问题。其中一个字符串保存游戏的正确答案,另一个字符串保存最近的4位数猜测。
aCount
必须是处于正确位置的字符数。
bCount
必须是正确答案中的字符数,但不是正确的位置。
bCount
是我遇到麻烦的部分(它没有像我期望的那样工作)。我想我可能会尝试双循环,但我不确定。
static String getHint(String guess, String answer){
int aCount=0;
int bCount=0;
String hintString="";
for (int i =0; i<answer.length(); i++){
char guessAChar = guess.charAt(i);
char ansAChar = answer.charAt(i);
if(guessAChar == ansAChar){
aCount++;
}
}
for (int indexOfGuess = 0; indexOfGuess < answer.length(); indexOfGuess++)
{
for (int indexOfActualNumber = 0; indexOfActualNumber < answer.length(); indexOfActualNumber++)
{
if (guess.charAt(indexOfGuess) == (answer.charAt(indexOfActualNumber)))
{
bCount++;
}
}
}
bCount = bCount - aCount;
hintString =("Your hint is: \n"+aCount+"A" + bCount + "B");
return hintString;
}
}
编辑:此问题已经解决:此方法现在搜索并输出每个字符串中匹配的数字,以及每个位置中的数字是否相同!
答案 0 :(得分:0)
变量bCount
是最终字符串中的数字量,但不在正确的位置。你需要一个双循环来检查每个字符串中的每个字符,看它们是否匹配。这可能会指出你正确的方向。
int outer_counter = 0;
for(char g : guess.toCharArray())
{
int inner_counter = 0;
for(char a : answer.toCharArray())
{
if(g == a && inner_counter != outer_counter)
{
bCount++;
}
inner_counter++;
}
outer_counter++;
}
计数器确保它们不在同一位置。
答案 1 :(得分:-2)
因此bCount确定答案中的位数,但不是在正确的位置。所以让我们试试这个:
public string bCount()
{
for (int indexOfGuess = 0; indexOfGuess < answer.length(); indexOfGuess++)
{
for (int indexOfActualNumber = 0; indexOfActualNumber < answer.length(); indexOfActualNumber++)
{
if (guess.charAt(indexOfGuess).equals(answer.charAt(indexOfActualNumber))
{
bCount++;
}
}
}
}
此方法可以:
我没有照顾你的唯一问题是如果输入两次号码。示例:如果数字是1900,并且您猜测1909,则bCount的数字将高于应有的数字。但是,我会把它留给你,因为这毕竟是家庭作业。