我正在制作自动售货机程序而且我不确定这是错误的
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
我只是想知道它为什么给我零而不是我期望的值。 提前谢谢。
答案 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.