2015-06-13 32 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循环而不是如果您希望它发生多次以防您想要说两个字符串不相等!不是(!=)并且逻辑上会起作用。 –