【发布时间】:2013-07-17 06:36:17
【问题描述】:
我正在尝试构建一个基本的重量计算器,但遇到了“变量 weightOut 可能尚未初始化”错误。谷歌似乎表明这是因为我需要初始化 "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.");
【问题讨论】:
-
减速时
weightOut的值未知(对于所有局部变量都是如此)。编译器担心您可能会在代码中处于未知状态时依赖此值。就个人而言,我认为您应该对其进行初始化以确保除非您在您的else分支中提供默认值,否则您的if语句会提供默认值 -
啊!等等,我当前的 else 语句是 else { System.out.println("I don't understand."); } 我可以将其更改为 else { weightOut = 0 } 以不产生错误吗?
-
你可能会发现编译器会停止抱怨......
-
但这会是不好的形式,我敢肯定吗?我想知道如何绕过编译器错误很有趣,但这样做的目的是学习好的代码,所以我将遵循其他答案并使初始化成为一种习惯。谢谢大家!
-
是的,我不会这样做,如果您的代码运行多个页面,则不清楚该值的实际含义。它也更安全,恕我直言
标签: java variables initialization