我的项目的前提是创建一个Hangman类型的游戏,用户输入一个只包含字母和空格的短语,它打印出短语但用问号代替字母,然后第二个用户猜测可能在短语中的字母。我正在努力的唯一部分就是让猜到的字母再次替换问号。现在,如果您猜出任何正确的字母,则会显示整个短语。这是我的更新方法。任何反馈表示赞赏!
public static int updateTemplateArray(char [] tmpArr, String sPhrase, char guess)
{
int vowel = 0;
for (int i = 0; i < sPhrase.length(); i++)
{
if(guess == sPhrase.charAt(i))
{
guess = tmpArr[i];
if (isVowel(guess))
{
vowel++;
}
}
}
return vowel;
} //end updateTemplateArray
编辑:我认为主要问题可能存在于不同的方法中,这就是
public static void printTemplateArray(char [] tmpArr)
{
char [] qMark = new char[tmpArr.length];
for (int i = 0; i < tmpArr.length; i++)
{
if(tmpArr[i] == ' ')
{
qMark[i] = ' ';
}
else
{
qMark[i] = '?';
}
}
System.out.print(qMark);
}
答案 0 :(得分:0)
好像是你的
<video width="320" height="240" controls>
<source src="movie.ogg" type="video/ogg">
<source src="movie.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
应该是
guess = tmpArr[i];
您可能还想从更新方法中删除tmpArr[i] = guess;
语句,因为它可能不应该是它的一部分(特别是作为循环的一部分)。在该方法之后调用它,以查看数组上由System.out.println(tmpArr);
表示的结果。
简化演示:
tmpArr
输出:
public static void updateTemplateArray(char[] tmpArr, String sPhrase, char guess) {
for (int i = 0; i < sPhrase.length(); i++) {
if (guess == sPhrase.charAt(i)) {
tmpArr[i] = guess;
}
}
}
...
String phrase = "foo bar";
char[] arr = new char[phrase.length()];
Arrays.fill(arr, '?');
//guessing time
updateTemplateArray(arr, phrase, 'f');
System.out.println(arr);
updateTemplateArray(arr, phrase, 'b');
System.out.println(arr);
updateTemplateArray(arr, phrase, 'x');
System.out.println(arr);
RE编辑:
在f??????
f???b??
f???b??
方法中,您只需创建一个填充了空格或printTemplateArray(char [] tmpArr)
的新数组。所以没有办法打印出这两个人的其他角色
如果你希望这个方法只隐藏?
字符而不是空格而且没有被第二个玩家猜到,那么你应该存储在某处并传递给你的方法猜测该玩家(?
似乎是对的收集的)。因此,您更正后的代码可能如下所示:
Set<Character>