编译器认为变量未赋值,但 if 语句覆盖了所有值

Compiler thinks variable is not assigned, but if statements cover all values

此代码中存在编译时错误。

"Example.java:17: error: variable y might not have been initialized".

谁能解释这个错误的原因以及如何解决它?

import java.util.*;
class Example{
  public static void main (String args[]){
    Scanner input=new Scanner(System.in);
    System.out.println("Input an integer : ");
    int num=input.nextInt();
    int y;
    if(num>100){
      y=200;
    }
    if(num<100){
      y=200;
    }
    if(num==100){
      y=200;
    }
    System.out.println(y);
    
  }
}

在访问变量之前必须对其进行初始化。

即使您在声明它们时没有提供值,静态变量和实例变量也会被隐式初始化。但是局部变量就不是这样了,必须明确赋值才能使用。

您没有使用 else 语句,并且对于编译来说您已经涵盖了所有可能的情况并不明显。

试试这个,您会看到现在变量 y 会根据用户输入相应地更改:

        int y;
        if (num < 100) {
            y=100;
        }
        else if (num > 100) {
            y=200;
        }
        else {
            y=300;
        }