Java 刽子手没有正常工作
我的applyGuess方法在每次猜测后返回用户的进度,如果他的猜测(在本例中是一个字母)在里面,我将它(+=)添加到进度中,所有即将猜测的字母都用“*”(星星)表示并打印在屏幕上。例如,用户猜测“a”,单词有两个aa***a*(输出),对于第二次猜测,让我们选择字母“n”,如果用户猜测“n”,我们得到*n****而不是 a**a*Java 刽子手没有正常工作,java,append,character-arrays,Java,Append,Character Arrays,我的applyGuess方法在每次猜测后返回用户的进度,如果他的猜测(在本例中是一个字母)在里面,我将它(+=)添加到进度中,所有即将猜测的字母都用“*”(星星)表示并打印在屏幕上。例如,用户猜测“a”,单词有两个aa***a*(输出),对于第二次猜测,让我们选择字母“n”,如果用户猜测“n”,我们得到*n****而不是 a**a* 谢谢 如果字母等于字母猜测,则输出似乎只显示一个字母而不是一个*。在第二个示例中,您传递了一个不等于“a”的“n”,因此它使其成为一个*覆盖旧字符串。这个问题可以通
谢谢 如果
字母
等于字母猜测
,则输出似乎只显示一个字母而不是一个*。在第二个示例中,您传递了一个不等于“a”的“n”,因此它使其成为一个*覆盖旧字符串。这个问题可以通过几种方式解决。一种可能的解决办法是:
Set<Character> previousGuesses = new HashSet<Character>();
public String applyGuess(char letterGuessed){
boolean isLetterInside = hiddenWord.indexOf(letterGuessed) >= 0;
char display;
String progress;
if (isLetterInside){
previousGuesses.add(letterGuessed);
for (char letter: hiddenWord.toCharArray()){
display = '*';
if (previousGuessess.contains(letter)){
display = letter;
}
progress += display;
}
} else {
misses++;
}
return progress;
}
Set previousGuesses=new HashSet();
公共字符串applyGuess(猜字符){
布尔值IsleterInSide=hiddenWord.indexOf(字母猜测)>=0;
字符显示;
串进程;
if(isLetterInside){
先前猜测。添加(字母猜测);
for(字符字母:hiddenWord.toCharArray()){
显示='*';
if(先前的猜测包含(字母)){
显示=字母;
}
进度+=显示;
}
}否则{
misses++;
}
返回进度;
}
您可以做的是跟踪用户所做的所有猜测,并在每次连续猜测时生成新的提示
private String hiddenWord = "banana";
private Set<Character> guesses = new HashSet<>();
private int misses;
public String applyGuess(char letterGuessed) {
if (!guesses.contains(letterGuessed)) {
guesses.add(letterGuessed);
if (!hiddenWord.contains(Character.toString(letterGuessed))) {
misses++;
}
}
char[] progress = hiddenWord.toCharArray();
for (int index = 0; index < hiddenWord.length(); index++) {
if (!guesses.contains(hiddenWord.charAt(index))) {
progress[index] = '*';
}
}
return new String(progress);
}
输出
**n*n*
*anana
banana
例如您需要某种方法来维护用户先前已经猜到的内容。如果将他的猜测放入私有成员变量并返回该变量,您是否可以执行此操作?THX您在哪里保存以前猜到的字符的记录?@niyasc我没有保存任何记录,我应该将所有命中的字符存储在一个变量中吗?另一件事,可能是打字错误。您将布尔变量声明为
isLetterInside
,之后它被称为letterInside
System.out.println(applyGuess('n'));
System.out.println(applyGuess('a'));
System.out.println(applyGuess('b'));
**n*n*
*anana
banana