简单如果语句不起作用(BlueJ)

时间:2016-03-14 14:55:46

标签: java bluej

我正在为学校做一个简单的自助结账,我不知道为什么这不起作用,我已经尝试了一切。 我想删除最后一项方法只有在布尔变量为真时才有效。将布尔值设为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;
    }

 }
}

2 个答案:

答案 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)

您已经使用了=运算符。注意:

  • =代表任务
  • ==代表intdouble等的比较
  • 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;
}