Java自动售货机基本程序



我正在制作一个自动售货机程序,我不确定出了什么问题

VendingMachine.java:

公共类自动售货机{

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

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

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

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

不过,在将来,是时候学习调试了。大多数IDE都具有调试功能,您可以在程序运行时查看变量的状态——您最好尝试一下,这样可以隔离错误。

还要注意,canCount应该是int,而不是double,因为int更准确,而且不太可能需要处理小数目的can。

编辑,您的insertToken方法将0任何和所有canCounts——查看您的逻辑以了解原因。您正在从canCount中减去canCount。因此,如果canCount==10,在这个方法之后,10-10将等于0。

最新更新