1

以下のコードにはコンパイラ エラーがあります。

speedMsg might not been initialized

どうすれば修正できますか?

String speedMsg;

// Determine the grade
if (speed >= 150)
  speedMsg = "STOP! STOP! Please let me OUT!";
else if (speed <= 150)
  speedMsg = "Whew I'll just walk from here Thanks.";
4

7 に答える 7

7

への変更:

// Determine the grade
if (speed >= 150)
    speedMsg = "STOP! STOP! Please let me OUT!";
else
    speedMsg = "Whew I'll just walk from here Thanks.";

変数が初期化されることをコンパイラに確認させるには、これで十分です。

于 2013-04-25T14:22:18.443 に答える
1

コンパイラは、speedMsg が常に値を持つことを認識するため、 にelse if置き換えます。else

于 2013-04-25T14:22:34.563 に答える
0

エラー変数 speedMsg が初期化されていない可能性があります

このエラー メッセージは、変数 (ここでは speedMsg) がnullである可能性があることを示しています。したがって、次のようなデフォルト値を設定すると、問題を解決できます。

String speedMsg = "Speed";

または、このように修正します

if (speed >= 150)
    speedMsg = "STOP! STOP! Please let me OUT!";
else
    speedMsg = "Whew I'll just walk from here Thanks.";

メッセージが表示される理由は、Eclipse が「if-else if」ブロックの比較が有効かどうかを確認できず、speedMsg が常に設定される (デフォルトなし) ためです。

IMHO 2 番目のソリューションはよりエレガントです。

于 2013-04-25T14:37:12.033 に答える
0

speedMsg を初期化してください:

String speedMsg = null;

これで問題は解決するはずです。speedMsg が初期化されていない可能性があります

于 2013-04-25T14:23:06.863 に答える
0

ステートメントを含める必要があります。これは、コンパイラーがandステートメントに値elseのすべての可能性を含めたことを理解できるほどスマートではないためです。speedifif else

ローカル変数はデフォルト値を持たない唯一のものであり、それらを初期化する必要があることに注意してください。

于 2013-04-25T14:23:18.607 に答える