2015-06-13 97 views
0

我正在爲我創建的儲錢罐類寫驅動程序類。這個想法是,它應該添加不同類型的硬幣(用戶輸入),然後總計美分並顯示它們,直到用戶輸入「X」。我認爲我的代碼是正確的,但是有一個奇怪的問題,如果我在代碼中使用「countMoney」訪問器,它會告訴我驅動程序類中的所有變量都是未初始化的。如果我刪除它,Eclipse沒有顯示錯誤。我已經打印了下面的源代碼和驅動程序類:驅動程序類奇怪的錯誤

package piggy; 

/** 
* @author Kevin 
* 
*/ 

import java.util.Scanner; 
import piggy.PiggyBank; 
public class PiggyBankTester { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 

     String num = "str", num1; 
     int count = 0; 
     int money; 

     Scanner scan = new Scanner(System.in); 
     Scanner scan2 = new Scanner(System.in); 

     PiggyBank total = new PiggyBank(); 

     System.out.println("Welcome to the Piggy Bank Tester"); 

     System.out.println("What type of coin to add (Q, H, D or X to exit)?");  
     num1 = scan.nextLine(); 
     num = num1.toUpperCase(); 
     { 
     if (num.equals("X")) 

      System.out.println("Goodbye."); 
     else if (num != "X") 
      { 
      System.out.println("How many do you wish to add?"); 
      count = scan.nextInt(); 
      if (num.equals("Q")) 
       total.addQuarters(count); 
      else if (num.equals("H")) 
       total.addHalfDollars(count); 
      else if (num.equals("D")) 
       total.addDollars(count); 
      else if (num.equals("X")) 
       System.out.println("Goodbye."); 


      } 
     } 


     { 
     total.calculate(); 
     money = total.countMoney(); 


     System.out.println("The piggy bank now contains " + money + " cents."); 
     } 
    } 

} 
+1

初始化實例以顯式設置所有實例變量的值時,這是一種很好的做法。在你的情況下,'numquarters','numhalfs','numdollars'和'cents'都應該設置爲零。 –

+0

@BrettWalker爲什麼這是一個很好的做法? –

+0

這對於其他人來說很清楚你打算如何。 –

回答

0

您不需要(String Q,D,H,X)。 此外,你已經宣佈這個變量沒有給他們任何價值只是名稱。 你可以做的一種方法是改變你的if-else語句並設置,例如,如果你希望num等於Q ---> if(num.equals(「Q」))< ---

+0

我已經更新了代碼,它正確執行,除了它不會繼續返回並請求輸入硬幣,直到輸入x。我知道這是因爲我沒有使用while循環,但每次我嘗試使用while而不是if時,我都陷入了無限循環。我將使用更新後的代碼編輯我的帖子。 – Kevin

+0

使用this - > if(!「success」.equals(statusCheck))< - 將此條件添加到while循環而不是如果您希望它發生多次以防您想要說兩個字符串不相等!不是(!=)並且邏輯上會起作用。 –