【问题标题】:Simple If statement not working (BlueJ)简单的 If 语句不起作用 (BlueJ)
【发布时间】: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)

标签: java bluej


【解决方案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;
    }
}

【讨论】:

  • 他还可以写balance -= itemPrice;count--;作为改进:)
【解决方案2】:

您错误地使用了= 运算符。注意:

  • = 代表 assignment
  • == 代表intdouble 等的比较
  • equals(..) 代表String 或其他的comparison..

所以你的代码应该是这样的:

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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多