我正在制作一个自动售货机程序,我不确定出了什么问题
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。