我遇到了这个非常简单的代码,在我看来,我们必须在声明它的同一范围内初始化一个变量,如果是这样,我不知道为什么。这是一个例子:
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 编译器我将在声明的范围内创建一个int
变量,然后我在 for 循环中初始化为 3 的值。是什么导致错误?我错过了什么?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。