试图制作一个方法来显示游戏的猜测字母Hang Man(Java)

时间:2017-01-01 06:52:10

标签: java

我想这样做,以便每次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;
    }
}

1 个答案:

答案 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

    }
}