1

私は宿題 (Hangman) に取り組んでいます。完成しましたが、例外を追加する必要があり、苦労しています。明日が期限ですが、まだ講師から連絡がないので、待っている間にここに投稿しようと思いました. 割り当てにはこれが必要です。

public booleanguessCharacter(charguess) throws Exception - このメソッドは、指定された文字がキー フレーズの一部であるかどうかを返します。推測された文字が有効な場合、このメソッドは true を返し、そうでない場合は false を返します。推測が以前に推測されている場合は、例外をスローする必要があります (これは、このメソッドを呼び出しているコードで処理できます)。

ワーカー クラス メソッドで例外をスローし、メソッドを呼び出すワーカー クラスで例外を処理する必要があると想定しています。私はSOを検索し、これを見つけました:

GUI でワーカーへの参照を保持し、作品に try catch を追加します。catch で例外を変数に割り当て、getter を追加します。GUI では、ワーカーが完了したら、ワーカーに例外があるかどうかを確認します。

これは私がしなければならないことのように見えますが、それを実装する方法が正確にはわかりません。コード例が欲しいです。これは私がこれまでに持っているものです(guessedLettersはセットです):

public boolean guessCharacter(char guess) throws Exception
{   
    // Reset index
    if (index == keyPhrase.length())
        index = 0;

    // Determine if guessed letter is part of word
    if (guess == keyPhrase.charAt(index))
    {
        isValid = true;
        boardArray[index] = guess;  // If it is, place it correctly in array
        try {
            // SOME TYPE a = guessedLetters.add(Character.toString(guess));
        } catch (Exception e) {
        //  a = not sure what to do here;
        }
    } else
        isValid = false;

    index++;

    return isValid;
} 

単語の長さに基づいて、このメソッドを何度も呼び出して、単語の各文字に対するユーザーの推測をチェックすることに注意してください。もっとエレガントな方法があると確信しています。また、ドライバークラスのブール値の結果をどうするのが役立つかわかりません。

前もって感謝します!

4

1 に答える 1

3

試行した場所で例外をキャッチするのではなく、例外をスローする必要があります。

これは宿題なので、実際のコードではなくガイダンスです。

まず、セットをチェックして、文字が既に推測されているかどうかを確認します。セットにすでに存在する場合は、例外をスローします ( throw new Exception("That letter has already been guessed!")。それ以外の場合は、文字をセットに追加し、通常どおり続行します。

あなたの割り当てが指摘したように、この例外は「このメソッドを呼び出しているコードによって処理されます」。デモンストレーションしたメソッド内で責任があるのはguessCharacter、必要に応じて適切な例外をスローすることだけです (推測が重複しているため)。

于 2013-02-24T06:10:35.580 に答える