0

だから私がやっていることになっているのは、ユーザーが文字を入力し、プログラムが文字が単語の一部であるかどうかを確認することです。そこから、文字の1つを明らかにするために使用する必要があるコードを理解できませんそれ自体は私がこれまでに持っているものです

do {            
            System.out.println("Word: " + secretWord.getWordMask());
            //System.out.print("Guesses: " + guesses);
            System.out.print("Enter your guess: ");
            Scanner keyboard = new Scanner(System.in);
            String guess = keyboard.next();


            WordHider revealChar = new WordHider();
            System.out.println(revealChar.revealLetter(guess));

            //if (secretWord.revealLetter(guess));            

    } while (secretWord.isHiddenWordFound());

これは私が与えられたクラスの別の部分であり、それをメソッドと呼んで実装する方法を理解する必要があります

public int revealLetter(String letter) {
    int count = 0;
    String newFoundWord = "";
    if (letter.length() == 1) {
        for (int i = 0; i < secretWord.length(); i++) {
            if ((secretWord.charAt(i) == letter.charAt(0))
                    && (wordMask.charAt(i) == HIDE_CHAR.charAt(0))) {
                count++;
                newFoundWord += letter;
            }
            else {
                newFoundWord += wordMask.charAt(i);
            }
        }
    }
    wordMask = newFoundWord;
    return count;

私の主な問題は、最初のセクションにあります。ここで、私がWordHider revealChar = new WordHider(); System.out.println(revealChar.revealLetter(guess)); すべきことは手紙を明らかにすることですが、それは間違いなく正しくありません。何かアイデアはありますか?

4

2 に答える 2

1

wordMask の代わりにカウントを表示しているようです。RevealLetter の戻り値の型を String に変更して wordMask を返すか、それができない場合は do-while のコードを次のように変更します。

revealChar.revealLetter(guess);
System.out.println(revealChar.getWordMask())
于 2013-03-29T20:59:24.487 に答える
0

プログラム全体を数行で置き換えることができます。

String guessedLetters ="";

次に、推測ループ内で:

guessedLetters += guess;
String display = secretWord.replaceAll("[^" + guessedLetters + "]", "_");
于 2013-03-29T21:08:41.077 に答える