java变量未初始化我必须设置一个变量,而不是仅仅在if语句中添加它吗?
我试图建立一个基本的重量计算器,遇到了“可变重量可能尚未初始化”的错误。谷歌似乎表示这是因为我需要初始化“weightOut”,而不是仅仅将其设置为“=weightIn*.78”。这是真的吗?这是我的密码
Scanner keyboard = new Scanner(System.in);
int weightIn, planetNumber;
double weightOut;
System.out.print("What is your weight? ");
weightIn = keyboard.nextInt();
System.out.println("I have information for the following planets: ");
System.out.println(" 1. Venus ");
...
System.out.print("What planet are you going to? ");
planetNumber = keyboard.nextInt();
if( planetNumber == 1 )
{
weightOut = weightIn * 0.78;
}
...
System.out.println("Your weight would be " + weightOut +
" on that planet.");
# 1 楼答案
如果行星号是0呢
你应该做:
# 2 楼答案
如果不输入if分支,变量将具有什么值
要解决此问题,请在末尾添加else分支:
在else分支中设置值,而不是设置一些默认初始值,不仅可以让编译器感到高兴,而且可以防止您提交编译器正在抱怨的错误:如果在if语句中设置正确值之前添加使用该变量的代码,您仍然会得到错误来自编译器的消息,而不是运行程序时的意外结果
# 3 楼答案
局部变量不使用默认值初始化。局部变量应该在使用前初始化
如果
if
语句在运行时从未真正执行过呢?编译器实际上担心的是,如果在运行时局部变量无法获取值,而您在其他地方使用它,那么它应该给出的值就没有默认值