编译器认为变量未赋值,但 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;
}
此代码中存在编译时错误。
"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;
}