【发布时间】:2016-03-14 14:55:45
【问题描述】:
我正在为学校做一个简单的自助结账,但我不知道为什么这不起作用,我已经尝试了所有方法。 我希望删除最后一项方法仅在布尔变量为真时才起作用。将布尔值设置为 false 意味着它将无法工作并显示打印的错误消息。到目前为止,无论布尔值是什么,remove last item 方法在某种意义上仍然是“删除”,因为它将项目的计数减少了 1。一旦调用打印收据方法,它就会重置计数和布尔值,以便如果没有项目,则无法删除。但是它仍然使计数值-1。 remove item 方法仅适用于一次(这意味着您不能删除一个项目,然后直接删除另一个项目),因此如果您在刚刚完成之后尝试删除一个项目,应该会在终端上打印一条错误消息,但是假定的错误消息根本不打印。
public class Machine
{
private double balance;
private int count;
private boolean lastEntry;
private double itemPrice;
public Machine()
{
balance = 0;
count = 0;
lastEntry = false;
}
public void scanItem(Item newItem)
{
balance = balance + newItem.price;
itemPrice = newItem.price;
count = count + 1;
lastEntry = true;
}
public void printReciept ()
{
System.out.println ("####################");
System.out.println ("Total = $" + balance);
System.out.println ("Number of Items = " + count);
System.out.println ("Next Customer!");
System.out.println ("####################");
balance = 0;
count = 0;
lastEntry = false;
}
public void removeLast ()
{
if (lastEntry = false) {
System.out.println ("CANNOT PERFORM ACTION");
}else if (lastEntry = true){
balance = balance - itemPrice;
count = count - 1;
lastEntry = false;
}
}
}
【问题讨论】:
-
=是用来赋值的,你要==做一个比较。 -
或者,更好的是,将其替换为:if (!lastEntry)