【问题标题】:Java: Guessing Game error countJava:猜谜游戏错误计数
【发布时间】:2013-11-09 13:14:49
【问题描述】:

大家好(我是 java B.T.W. 新手)

我正在使用 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 而不是== 时,它都会让我正确猜测正确的计数。

我想不通:(

任何帮助将不胜感激

【问题讨论】:

  • 这是一个刽子手游戏吗?
  • 那么刽子手,差不多吧?
  • 是的,很像刽子手。只有游戏缺少gui和body部分...
  • @MightyPork 非常感谢您像魅力一样工作:)
  • np,很高兴为您提供帮助。请在可能的情况下接受答案。

标签: java count


【解决方案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 在 cmets 中正确指出的那样,有一个预烘焙的解决方案:

if(!word.contains(asciiToChar)) { error++; }

【讨论】:

  • 您也可以在found = true; 之后添加break; 以减少不必要的循环。
  • 为什么还要自己循环呢? java.lang.String 有一个contains 方法,所以你只需要if(!word.contains(asciiToChar)) { error++; }
  • 哦,是吗?谢谢你丰富了我的知识。无论如何,我认为他最好先学会如何做循环和 ifs。懒惰可以晚一点。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多