我正在为学校做一个简单的自助结账,我不知道为什么这不起作用,我已经尝试了一切。 我希望删除最后一项方法仅在 boolean 变量为 true 时才起作用。 boolean 值为 false 意味着它将无法工作并会显示打印的错误消息。到目前为止,无论 boolean 值是什么,删除最后一项方法在某种意义上仍然是“删除”,因为它将项目计数减少 1。一旦调用打印收据方法,它就会重置计数和 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;
}
}
}
最佳答案
=
运算符执行赋值,而不是比较。您应该使用 ==
运算符来测试相等性。
在这种情况下,你可以简单地这样写:
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;
}
}
关于java - 简单的 If 语句不起作用 (BlueJ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35990872/