0

私は現在、Javaで以下のようなプログラムを作成しています。変数ACを初期化するように要求します。

double AC;
System.out.println("Please choose A or B")

If(Condition to see if it A)
{
AC = 1
}
else if(Condition to see if it B)
{
AC = 2
}
else 
{
System.out.println("Please Enter a valid choice!")
}

double ab = AC * 2

これにより、「変数ACを初期化する必要があります」というエラーが発生します。これは、ユーザーがAまたはBを選択しない場合、doubleabで使用するACがないためです。どうすればこれを解決できますか?ありがとう

4

5 に答える 5

1

それはそれが言うことです:あなたはACそれを使う前に初期化されていることを確認しなければなりません。

あなたの問題は、あなたACが最後に落ちた場合、それは価値がないということですelse

あなたはそれにデフォルト値を与えるかもしれません:

double AC = 33.2; // or Double.NaN if you prefer
System.out.println("Please choose A or B")
...
于 2012-12-15T20:36:42.447 に答える
0

ローカル変数とプリミティブは、使用前に初期化する必要があります。これは、値から何が期待できるかを知っているためです。

したがって、次のような変数の値を初期化する必要がありますAC = <<any value>>;

以下の例を検討してください

int a;  // Valid
int b;
println("a=" + b);  // Not valid since b's value has never been assigned
于 2012-12-15T20:39:40.057 に答える
0

ここで 2 つのこと:

  • 実行されるelse句は、有効な数値の使用のみを要求します。これがコンパイルされたとしても、値が有効な値に再確立されないため、プログラムのフローは正しくありません。つまり、回答を再度確認するためにループすることはありません。

  • この節は、が割り当てられているかどうかをコンパイラが確認する場所の 1 つである にelse値を割り当てようとはしません。他の 2 つのコード パスのいずれかがたどられるという保証はありませんが、常にたどられます。そこにはそれが表示されないため、「変数が初期化されていない可能性があります」というエラーが表示されます。ACACelse

于 2012-12-16T06:59:56.743 に答える
0

Java 7では、文字列でスイッチを使用できます

    switch (choose) {
    case "A":
        AC = 1;
        break;

    case "B":
        AC = 2;
        break;

    default:
        AC = -1;
        break;
    }
于 2012-12-15T20:46:31.087 に答える
-1

「if」のどちらのオプションもそうではない可能性があるため、ACを初期化する必要があります。やるだけ

double AC = -1;

またはいくつかのダミー値。

于 2012-12-15T20:37:12.010 に答える