私はこの非常に単純なコードに出くわしました、そして私たちがそれを宣言するのと同じスコープで変数を初期化する必要があるように思えます、もしそうなら私は理由について混乱しています。次に例を示します。
class Test
{
public static void main (String[] args)
{
int x; // if initialize x to anything everything works fine
for (int i = 0; i < 3; i++)
{
x = 3;
System.out.println("in loop : " + x);
}
System.out.println("out of loop " + x); // expect x = 3 here, but get an error
}
}
上記のコードはこのエラーを生成します:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The local variable x may not have been initialized
なぜこれが起こっているのか私は混乱しています。宣言したスコープに変数int x
を作成することをJavaコンパイラに通知することを期待してから、forループで値3に初期化しました。エラーの原因は何ですか?私は何が欠けていますか?int
x
x
x
ちなみに、C++で期待したとおりに非常によく似たコードが機能します
#include<iostream>
using namespace::std;
int main()
{
int x;
for(int i = 0; i < 3; i++)
{
x = 3;
cout<<"in loop : "<<x<<endl;
}
cout<<"out of loop : "<<x<<endl; //expect x = 3 here
return 0;
}
JavaにはEclipseを使用し、C++にはCode::Blocksを使用しています。