无法在循环外访问变量 - java

时间:2018-03-03 12:53:23

标签: java variables for-loop

出于某种原因,即使我在for循环之外初始化变量,我的代码也不会编译......

    public static void main(String[] args) {
      int x;

      for (int i = 0; i < 4; i++){
        x = 10;
      }

      System.out.println(x);
    }

我收到错误:

    error: variable x might not have been initialized
      System.out.println(x);

任何帮助都会非常感激,因为我知道答案会很简单。

3 个答案:

答案 0 :(得分:0)

你声明了变量,你没有对它进行初始化,没有任何优化,编译器就不知道你的循环是否产生了一次迭代来实际初始化它。尝试:

{{1}}

不可否认,这是一个非常愚蠢的功能&#34; java编译器。

答案 1 :(得分:0)

只需更改它,以便int x = 0;

推断出x = 0,但在这种情况下需要初始化值。

    public static void main(String[] args) {
    int x = 0;

    for (int i = 0; i < 4; i++){
        x = 10;
    }

    System.out.println(x);
}

编辑:x值(不能为空)

答案 2 :(得分:0)

您在类级别声明的原始变量会自动初始化为零(或错误)。如果您的变量是一个对象,它将默认为null。 如果变量的范围是方法级别,则需要为它提供一个值:这就是编译器告诉你的。
在您的示例中,编译器不够聪明,无法看到值始终分配给变量x,因此要求您提供初始化值。

你只需要添加int x = 0;它会编译。