1. ホーム
  2. java

[解決済み】変数が初期化されていない可能性があるエラー

2022-02-12 02:16:38

質問内容

これをコンパイルしようとすると

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

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