0

これが私の方法です:

//usedLetters method to check if user's guess has already been guessed
private boolean usedLetters(char used[], char alphabet) throws IOException
{
   for(int x=0; x<used.length; x++){

    if(alphabet == used[x])
    {
        return true;
    }

    else
    {
        used[dataSize] = alphabet;
        return false;
    }
    }
}//End of usedLetters method

IT 部門は、ユーザーが別の方法で入力したアルファベットが既に推測されているかどうかを確認します。既に推測されている場合は true を返し、まだ推測されていない場合は、アルファベットを used に追加して false を返します。しかし、エラーはreturnステートメントがないことを示しています...私は一般的にメソッドに精通していないので、混乱しています。どんな助けでも大歓迎です!

4

6 に答える 6

6

もしもused.length==0?その場合、for ループには決して入りません。

returnしたがって、ループの後にステートメントが必要です。

于 2012-12-21T13:41:05.313 に答える
2

for が入力されていない場合はどうなりますか? つまりused.length == 0(usedは空の配列です)。この場合、何も返されません。

コンパイラは、値を返さずに終了できるフローを禁止しているため、エラーが表示されます。


また、この問題を修正した後でも、プログラムは間違った結果をもたらすと信じていusedます。次の要素に進むことなく、の最初の要素のみをチェックします。

于 2012-12-21T13:40:12.537 に答える
2

return false;を最後の の直前に移動する必要があり}ます。それ以外の場合は、ループの最初の繰り返しで返されます。

于 2012-12-21T13:40:31.180 に答える
0

あなたがコードを書いたので、メソッドは常にサイクルの最初の繰り返しで返されますが、これがあなたが望んでいることだとは思えません。

for の外では false を返すべきだと思います。「アルファベットを推測する」とはどういう意味かわかりませんが、これがあなたがやろうとしていることだと思います.

于 2012-12-21T13:42:45.140 に答える
0

はい、上記はすべて正しいです。一番上で戻り変数を定義し、メソッド本体内の必要な場所に値を設定し、「for」ループから抜け出し、最後に一度返す方がよいでしょう。

于 2012-12-21T13:44:26.157 に答える
0

ユーザーの推測が既に推測されているかどうかを確認する /usedLetters メソッド
private boolean usedLetters(char used[], char alphabet) は IOException をスローします
{
   for(int x=0; x

if(alphabet == used[x])
{
    return true;
}

else
{
    used[dataSize] = alphabet;
    return false;
}
}

}// usedLetters メソッドの終わり

for ループの後に return ステートメントが必要です。現在、return ステートメントがないため、エラーが発生しています。

于 2012-12-21T13:40:24.530 に答える