基本的Java自动售货机程序

时间:2015-09-29 23:49:46

标签: java

我正在制作自动售货机程序而且我不确定这是错误的

VendingMachine.java:

公共类VendingMachine {

int canCount;
int tokenCount;

public VendingMachine()
{
    canCount = 0;
    tokenCount = 0;
}
public VendingMachine(int initialCans, int initialTokens)
{
    canCount = initialCans;
    tokenCount = initialTokens;
}
public void fillUp(int cans) 
    {
    canCount += cans;   
    }
public void insertToken()
{
    tokenCount -= tokenCount;
    canCount -= canCount;
}
public double getCanCount()
{
    return canCount;
}
public double getTokenCount()
{
    return tokenCount;
}

}

VendingMachineTester.java:

public class VendingMachineTester
{
    public static void main(String[] args)
    {
        VendingMachine machine = new VendingMachine(5, 5);
        machine.fillUp(10); // Fill up with ten cans
        machine.insertToken();
        machine.insertToken();
        System.out.print("Token count: ");
        System.out.println(machine.getTokenCount());
        System.out.println("Expected: 7");
        System.out.print("Can count: ");
        System.out.println(machine.getCanCount());
        System.out.println("Expected: 13");
    }
}

当我运行它时,它给了我:

Token count: 0.0
Expected: 7
Can count: 0.0
Expected: 13

我只是想知道它为什么给我零而不是我期望的值。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

public void fillUp(int cans)    {
    canCount += canCount;   
}

由于canCount从0开始,因此使用此方法始终将0添加到0,0 + 0将始终等于0.而是将参数添加到canCount:canCount += cans;

将来,你学会调试的时间。大多数IDE具有调试功能,您可以在程序运行时查看变量的状态 - 您可以尝试这些,这样可以隔离您的错误。

另请注意,canCount应该是int,而不是double,因为int更准确,并且您不太可能需要处理一小部分罐。

编辑,你的insertToken方法将为0和所有canCounts - 看你的逻辑,看看为什么。您正在从canCount中减去canCount。因此,如果canCount == 10,则此方法后10 - 10将等于0.