2014-12-01 63 views
-2

试图在用户输入6个数字的情况下创建for循环。然后验证每个数字以确定它是否为正数。然后他们全部加起来作为小计。本地变量可能尚未在我的For循环中初始化

在我的最后一行count += itemPrice;我在count上发生错误,提示“局部变量可能未被初始化。”我的一个好友似乎无法弄清楚为什么,并想知道那是怎么回事。

public static double namehere() { 
double count; 
for (int x = 0; x < 6; x++) 
{ 
    Scanner input = new Scanner (System.in); 
    System.out.println ("Price of Item: "); 
    double itemPrice = input.nextDouble(); 
    while (itemPrice < 0.01) 
    { 
     Scanner input2 = new Scanner (System.in); 
     System.out.println ("Price of Item: "); 
     itemPrice = input.nextDouble(); 
    } 
    count += itemPrice; 
} 
+1

你需要给你的计数默认值。在这里,我建议0. – realUser404 2014-12-01 21:11:40

+0

你的方法需要一个'count'上的return语句需要一个默认值。 – 2014-12-01 21:13:06

+0

可能的重复[如何避免'局部变量可能未被初始化'?](http://stackoverflow.com/questions/1585513/how-to-avoid-the-local-variable-may-not-have -been-initialized) – 2014-12-01 21:13:50

回答

2

由于错误消息说,你count变量未初始化。要解决该错误,请使用默认值进行初始化,如0

注意:局部变量不是隐式地初始化,不像类成员。

3
double count;  // not initialized 

double count = 0; // initialized 

默认情况下,本地基元变量未设置为0,因此它们必须显式初始化。

1

局部变量的用途不同于实例变量的用途。局部变量可以用作计算的一部分;实例变量在那里包含状态。如果你使用一个局部变量而没有赋值,这几乎肯定是一个逻辑错误,因此,编译器会抱怨..

+0

如果它是实例变量,如果没有初始化,那么也会出现错误 – realUser404 2014-12-01 21:18:37

+0

不,在实例变量的情况下,不会有任何错误,因为JVM在创建对象时初始化所有实例变量。 – 2014-12-01 21:21:24

+0

我不知道,谢谢你的信息 – realUser404 2014-12-01 21:23:23