带有indexOf的Java StringBuilder

时间:2012-12-31 22:48:18

标签: java stringbuilder indexof

我正在用Java编写传统的刽子手游戏。我目前所坚持的是找出用户字符输入是否不是String中的字符。

if(getLetters.indexOf(userCharInput)==-1) //getLetters is the StringBuilder, and the userCharInput is a String.
{
     playerCounter++;
}

这是我似乎遇到麻烦的部分,我查看了不同的indexOf示例,并且我已经制定了这个以便与我的程序一起使用。

问题是,它不起作用。我设置它以便玩家有3次机会猜测这个单词,因为默认单词是“apple”我猜对了'a','p'和'l',这让'e'被猜到了。现在我故意做出3次不正确的猜测,并且不会触发下一个else if

else if(playerCounter == 3)
{
    System.out.println("All lives are gone! Game Over!");
    playerCounter = 1; //resets the playerCounter to one.
    System.exit(0);
}

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:3)

这是因为当你继续猜错字母时,第一个if语句被评估为true:

if(getLetters.indexOf(userCharInput)==-1) //getLetters is the StringBuilder, and the userCharInput is a String.
{
     playerCounter++;
}

所以你不断增加playerCounter(超过3)。这意味着你的下一个语句是无法访问的(一旦它超过3,它就不会变得更小,至少使用你到目前为止发布的代码)。因此,else if (playerCounter == 3)可能无法访问。

答案 1 :(得分:1)

我猜你的else if是另一个if语句的一部分,所以请检查出来。

答案 2 :(得分:0)

它无法正常工作的原因是因为indexOf方法使用不当,部分原因在于if语句的排序,但这对主要问题来说非常微不足道。必须改变的是我使用indexOf方法的方式。

即。而不是gletter.indexOf(character);它应该是word.indexOf(character); 其中word是必须猜到的词,而gletter是用来跟踪用户猜测的StringBuilder

答案 3 :(得分:-2)

这是StringBuilder的Javadoc:

根据你发布的代码,我猜:

1)您将所需的字母(例如单词“apple”中的字母)保存到getLetters。

2)getLetters是StringBuilder类型

3)如果userCharInput类型为“char”,那么indexOf()可能不能给出预期的结果

4)用“if if”代替“if”

SUGGESTIONS:

尝试将“getLetters”更改为“String”,看看是否有帮助。

while (...) {
  ...
  //getLetters is the StringBuilder, and the userCharInput is a String.
  if(getLetters.indexOf(userCharInput)==-1)  {
     playerCounter++;
  }
  // Debug: comment this out once it's working
  System.out.println ("userCharInput=" + userCharInput + ", playerCounter=" + playerCounter);
  if(playerCounter == 3) {
    System.out.println("All lives are gone! Game Over!");
    playerCounter = 1; //resets the playerCounter to one.
    System.exit(0);
  }
  ...
}