2014-12-01 60 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