2

嘿伙计们(我是Java BTW的新手)

我正在使用 Java 开发一个小型猜谜游戏,但遇到了一些问题。如果有人能帮助我克服这个问题,我将不胜感激。

游戏是这样的:

  • 猜测词列表存储在数据库中
  • 选择一个随机词,并且
  • 变相展示给用户
  • 用户必须使用字母猜测单词
  • 他们有 5 个字母要猜,直到游戏结束

现在我的问题是我一直被错误计数困扰......

我的代码是这样的:

 //word is the word that user must guess
 // asciiToChar is letter that users've guessed
 // J is just a variable used for count

 for (j=0; j < word.length(); j++)
       {    if (word.charAt(j) != asciiToChar)
            {
             error++;
            }
       }
 System.out.println("Number of Errors: "+" "+ error);

每次用户执行错误猜测时,错误计数应该会增加,但它会显示一些随机数,例如 8,14 或其他东西。我需要弄清楚如何将计数仅增加 1 直到 5 次猜测

每当我使用word.charAt(j) != asciiToChar而不是 ==它时,它都会给我正确的猜测。

我想不通:(

任何帮助将不胜感激

4

2 回答 2

1

您的循环逻辑是错误的,它会为每个不等于用户猜测的字符添加错误。

尝试这样做(如果我做对了):

boolean found = false;
for (j=0; j < word.length(); j++)
{    
    if (word.charAt(j) == asciiToChar)
    {
        found = true;
        break; // no need to search further
    }
}
if(!found) error++; // if the letter isn't used, add 1 error

正如 Ingo Bürk 在评论中正确指出的那样,有一个预烘焙的解决方案:

if(!word.contains(asciiToChar)) { error++; }
于 2013-11-09T13:19:41.810 回答
1

您的循环遍历所有字符,word并且对于与用户给出的字符不匹配的每个字符,它将错误增加一个。因此,如果单词是“cat”并且用户猜测“a”,则会出现两个错误,一个是“c”,一个是“t”。

于 2013-11-09T13:19:44.867 回答