我必须写一个刽子手的家庭作业。我们不允许使用任何 char 数组,只能使用 String 方法来操作字符串本身。我遇到的一个问题是当我尝试检查字符串生成器是否有重复项时。
这是我的刽子手方法
public void playHangMan(Scanner guessWord)
{
int error = 6;
String letter;
boolean vali, dup;
displayHangman();// call displayHangman method
// get input, lower case input, and then validate in a loop
do
{
letter = guessWord.nextLine();
letter = lowerGuess(letter); // call lowerGuess method
vali = letter.matches("[a-z]");
dup = checkDup(letter); // call checkDup method
if(vali == false)
{
System.out.print("Please enter only a SINGLE letter: ");
}
else if(dup == true)
{
System.out.print("Duplicated letter, please enter another: ");
}
if(dup == false && vali == true)
{
this.guessAns.append(letter);
}
}
while(vali == false && dup == false);
}// end playHangman method
我的重复方法:
private boolean checkDup(String letter)
{
int i;
boolean dup = false;
// check guessAns StringBuilder for duplicate letters
for(i = 0; i <= this.guessAns.length() - 1 && dup == false; i++)
{
if(letter.equals(this.guessAns.charAt(i)))
{
dup = true;
}
}
if(dup == true)
{
return true;
}
else
{
return false;
}
}// end checkDup method
问题是我的 checkDup 方法没有找到任何重复项。我尝试将字母 a 附加到我的字符串生成器中并输入字母的值 a ,但仍然没有运气。是否可以letter.equals(this.guessAns.charAt(i))
将字符串与字符进行比较,这就是为什么我的 checkDup 方法无法找到重复项的原因?有人可以解释一下我可以解决这个问题的方法吗?任何帮助将不胜感激。