【问题标题】:Weird error on driver class驱动程序类的奇怪错误
【发布时间】:2015-06-13 16:09:42
【问题描述】:

我正在为我创建的存钱罐类编写一个驱动程序类。这个想法是,它应该添加不同类型的硬币(用户输入),然后合计美分并显示它们,直到用户输入“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.");
        }
    }

}

【问题讨论】:

  • 在初始化实例时明确设置所有实例变量的值是一种很好的做法。在您的情况下,numquartersnumhalfsnumdollars' and cents` 应全部设置为零。
  • @BrettWalker 为什么这样做是个好习惯?
  • 它让别人很清楚你的意图。

标签: java class accessor


【解决方案1】:

你不需要 (String Q,D,H,X) 。 此外,您已经声明了这些变量,但没有给它们任何值,只是名称。 您可以这样做的一种方法是更改​​您的 if-else 语句和 set ,例如,如果您希望 num 等于 Q ---> if (num.equals("Q") )

【讨论】:

  • 我已经更新了代码,它可以正确执行,只是在输入 x 之前它不会继续返回并要求硬币。我知道这是因为我没有使用 while 循环,但每次我尝试使用 while 而不是 else if 时,我都会陷入无限循环。我将使用更新的代码编辑我的帖子。
  • 使用这个 -->if (!"success".equals(statusCheck))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-04
相关资源
最近更新 更多