公式のJavaチュートリアルに含まれている簡単な「多次元配列で番号を見つける」を書きました。チュートリアルに含まれているコードは次のとおりです。
class LabeledBreak {
public static void main(String[] args) {
int [][] numbers = {
{22, 34, 675, 23, 23},
{34, 76, 98, 23, 11},
{65, 234, 87, 23, 76}
};
int searchFor = 123;
boolean found = false;
int i;
int j = 0; // <-- this line
search:
for (i = 0; i < numbers.length; i++) {
for (j = 0; j < numbers[i].length; j++) {
if (searchFor == numbers[i][j]) {
found = true;
break search;
}
}
}
if (found == true)
System.out.println("Found " + searchFor + " at index " + i + ", " + j);
else
System.out.println(searchFor + " not found!!!");
}
ここで「j」を初期化する意味がわかりませんでした。初期化ステートメントを削除して、単なる宣言ステートメントにしてみました。しかし、私はそのエラーを受け取りました:
「変数jが初期化されていない可能性があります」
「j」を初期化する必要があるのはなぜですか?「i」も初期化を必要としなかったのはなぜですか?