我想这样做,以便每次hiddenWord();
被调用时,它会根据所猜测的猜测字母显示该单词的提示,因此如果没有猜测,您将得到类似"____"
的内容。如果这个词是迈克,我猜对了'我'和'e'它会显示"_i_e"
。
我已经在这一段时间了,我只是无法绕过它。如果问题是非常基本的话,我还是一个新手,所以提前对不起。
我将发布我正在尝试制作的方法,如果需要我可以发布其余的。这个方法有两个主要问题。
1-我需要让this.guessedLetter
至少有3个字符,所以在它的当前状态是“”它不起作用。这就是为什么在下面添加3个空格的原因。否则我会得到一个我不理解的索引错误。
2-第二个问题是当我找不到这封信的时候如何正确地分发"_"
,我似乎做了太多破折号。
public String hiddenWord() {
int i = 1;
int j = 1;
this.guessedLetters += " ";
char c = this.word.charAt(i);
char d = this.guessedLetters.charAt(j);
while (i <= this.guessedLetters.length()-1) {
while (j <= this.word.length()-1) {
if (c == d) {
this.hiddenWord += c;
j++;
}
else {
this.hiddenWord += "_";
j++;
}
}
i++;
}
return this.hiddenWord;
}
}
答案 0 :(得分:0)
我为你准备了一堂课。我是根据你从描述中推断出的内容写的。
public class Hangman {
// This char array will hold the result after each guess
// for example, if the word is "mike", and the use guesses 'i'
// the result array will contain ['_', 'i', '_', '_']
private char[] result = null;
// The word the user has to guess
private String word = null;
public Hangman(String word) {
this.word = word;
result = new char[word.length()];
// initialize the result to contain only underscores
for (int i = 0; i < result.length; i++)
result[i] = '_';
}
public String getResult(char guessChar) {
// The underlying char array of the secret word
char[] wordArray = word.toCharArray();
for (int i = 0; i < wordArray.length; i++) {
if (wordArray[i] == guessChar)
result[i] = guessChar;
}
return new String(result);
}
}
以下是上述类
的用法示例public class Test {
public static void main(String[] args) {
Hangman h = new Hangman("mike");
System.out.println(h.getResult('i')); // prints _i__
System.out.println(h.getResult('e')); // prints _i_e
}
}