我正在为学校做一个简单的自助结账,我不知道为什么这不起作用,我已经尝试了一切。 我想删除最后一项方法只有在布尔变量为真时才有效。将布尔值设为false意味着它将无法工作并提出打印的错误消息。到目前为止,无论布尔值是多少,删除最后一项仍然是"删除"从某种意义上说,它减少了项目数量1.一旦调用了打印接收方法,它就会重置count和boolean值,这样你就无法删除项目(如果没有)。但是它仍然使计数值为-1。删除项目方法仅用于工作一次(意味着您不能直接删除项目然后另一项目),因此如果您在刚刚完成后尝试删除项目,则应该在终端上打印一条错误消息,但所谓的错误信息根本就不打印。
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;
}
}
}
答案 0 :(得分:1)
=
运算符执行赋值,而不是比较。您应该使用==
运算符来测试相等性。
在这种情况下,您可以这样写:
public void removeLast ()
{
if (!lastEntry) { // ! operator means logical negation
System.out.println ("CANNOT PERFORM ACTION");
} else { // !lastEntry is false, so lastEntry must be true
balance = balance - itemPrice;
count = count - 1;
lastEntry = false;
}
}
答案 1 :(得分:0)
您已经使用了=
运算符。注意:
=
代表任务 ==
代表int
,double
等的比较。equals(..)
代表String
或其他人的比较 .. 所以你的代码应该是这样的:
if (lastEntry == false) {
System.out.println ("CANNOT PERFORM ACTION");
} else if (lastEntry == true){
balance = balance - itemPrice;
count = count - 1;
lastEntry = false;
}
您可以使用!
以及--
和-=
运营商缩短时间:
if (!lastEntry) { // is false
System.out.println ("CANNOT PERFORM ACTION");
} else { // else if true
balance -= itemPrice;
count--;
lastEntry = false;
}