1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】変数が初期化されていないかもしれないエラー

2022-01-10 05:01:59

質問内容

コードは次のとおりです。

public static Rand searchCount (int[] x)
{
    int a ;
    int b ;

    ...

    for (int l= 0; l<x.length; l++)
    {
        if (x[l] == 0)
        a++ ;
        else if (x[l] == 1)
        b++ ;
    }

    ...

}

コンパイルすると、エラーが発生します。

Rand.java:72: variable a might not have been initialized
                a++ ;
                ^
Rand.java:74: variable b might not have been initialized
                b++ ;
                ^
2 errors

メソッドの先頭で初期化したようです。 

どのように解決するのですか?

あなたは 宣言 が、初期化されていません。初期化とは、ある値と等しくなるように設定することです。

int a;        // This is a declaration
a = 0;        // This is an initialization
int b = 1;    // This is a declaration and initialization

変数を初期化していないのに、変数をインクリメントしているからエラーが出るのです(例. a++ ) の中で for のループになります。

Javaプリミティブにはデフォルト値がありますが、あるユーザーが以下のようにコメントしています。

クラスのメンバとして宣言された場合、そのデフォルト値はゼロです。ローカル変数にはデフォルト値がない