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

问题描述 投票:0回答:3

出于某种原因,即使我在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);

任何帮助将非常感激,因为我知道答案将是如此简单。

java variables for-loop
3个回答
0
投票

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

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

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

    System.out.println(x);
}

不可否认,它是java编译器的一个愚蠢的“功能”。


0
投票

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

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


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值(不能为空)

© www.soinside.com 2019 - 2024. All rights reserved.