所以编译器说第二个打印行语句中的英寸变量需要初始化。这是为什么?为什么我不能将变量保留为未知变量?当我没有 if/else 语句时,它就可以正常工作。
import java.util.Scanner;
class FeetToInchesInputOutput {
public static void main(String[] args){
double feet;
double inches;
String userFeetInput;
Scanner input = new Scanner(System.in);
System.out.print("How many feet do you want to convert?");
userFeetInput = input.nextLine();
feet = Double.parseDouble(userFeetInput);
if (feet < 500.0) {
inches = feet*12;
}
else {
system.out.println("Type a number less than 500.");
}
System.out.println(feet + " feet is equal to " + inches + " inches.");
System.exit(0);
}
}
最佳答案
在 Java 中,局部变量不会自动初始化。在代码中使用它之前必须先初始化它。在您的代码中,如果条件为真,它将被初始化,但编译器不知道条件是真还是假。这是在运行时决定的。在其他情况下,条件变量英寸没有被初始化(或者你说被分配了一个值)。所以它会抛出编译错误。您甚至可以用 null 初始化对象。
你必须初始化它,因为Java的创建者决定局部变量不会像类级别变量那样获得默认值。所以你必须初始化它。
关于java - 变量可能尚未初始化——为什么我需要初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33058195/