1

私はacmパッケージを使ったオンラインJava講座を受講しているので、以下の構文は「オーソドックスなJava」ではないかもしれません。とにかく、うまくいけば、私がここで述べている点は、パッケージに精通している人やそうでない人にも伝わるでしょう:

以下のコードは、Java でハングマン ゲームのユーザー入力を検証するために機能しますが、入ってみると、1 つの if else ステートメントでこれを実行できると確信していましたが、最終的には便宜上、ネストされた if を追加することにしました。 、else ステートメント。これを行うための非常に明白な方法が少なくとも1つあると確信しているため、if elseステートメントでこのコードをリファクタリングする方法を理解できないことは本当に私を悩ませています。どんな助けでも大歓迎です!

private void turn()
{
    println("The word now looks like this: " + currentWord);
    println("You have " + guessesLeft + " guesses left.");
    currentGuess = readLine("Your guess: ");

    String temp = currentWord;

    /*test for legality of guess
     * 1) is it exactly 1 char long?(ie not blank nor a long string
     * 2) is it a letter?
     */
    if(currentGuess.length() == 0)
    {
        println("That is an illegal guess.");
    }
    else{
        char guessedLetter = Character.toUpperCase(currentGuess.charAt(0));

        if(currentGuess.length() != 1 || !Character.isLetter(guessedLetter))
        {
            println("That is an illegal guess.");
        }
        else{
        /*scan through secret word to find a match between
         * entered guess and secret word
         */ ......}

private String currentGuess;
private String currentWord;
4

1 に答える 1

0

さて、== 0チェックのために、関数を終了するために戻る必要があるかもしれません。ゼロ以外の長さの推測のみが残るため、外側の else ブロックが消え、最も外側のレベルでコードを続行できます。メソッドがどのように終了するかわからないので、おそらくこれが最善の方法だと思います。

于 2014-02-05T13:43:37.217 に答える