我有点问题。这是情况。我的主类中有一个金额字段,当单击某些按钮时该字段会增加。提供了一种方法,您可以通过该方法删除任何订单(我基本上是为餐厅终端编程)并且数量会减少。删除方法放在另一个类中。
public void posdel(int pos, JTextField amountFieldGot, int amountGot)
{
if(slist==null)
{
JOptionPane.showMessageDialog(null, "No order has been placed yet.",null,JOptionPane.WARNING_MESSAGE);
}
else
{
if(pos==1)
{
reductionAmount = (slist.quantity*slist.price);
amountGot = amountGot - reductionAmount;
slist=slist.next;
}
else
{
int i=1;
Node temp=slist;
Node prev=null;
while(temp.next!=null && i<pos)
{
prev=temp;
temp=temp.next;
i++;
}
if(pos==i)
{
prev.next=temp.next;
}
else
{
JOptionPane.showMessageDialog(null, "Invalid order", null, JOptionPane.ERROR_MESSAGE);
}
}
}
amountFieldGot.setText(Integer.toString(amountGot));
}
所以基本上,我的 GUI 中有一个 amountField,我将其作为参数传递给 posdel 方法。我还将金额值作为参数传递。我得到的新金额是删除第一个订单后的amountGot。(其他仓位的代码我还没写。)假设我传入方法的金额值为30(14+16)14 = order 1, 16 = order2。我的第一个订单的值为 14。所以 amountGot = 30 - 14 即 16。GUI 中的 amountField 更新为 16。现在我的订单 2 成为我的订单 1。如果我尝试删除它,我的 amountField更新到 14。(30-16 = 14)。所以我猜测金额值本身与 30 相同,并且不会更新为新的 amountGot 值。有人可以帮我解决这个问题吗?
下面是我的删除按钮的代码。
deleteButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
dishDelPos = JOptionPane.showInputDialog("Enter the position of the order to be deleted");
try
{
dishDeletePosition = Integer.parseInt(dishDelPos);
order1.posdel(dishDeletePosition, amountField, amount);
repaint();
}
catch(NumberFormatException ex1)
{
JOptionPane.showMessageDialog(null,"This is not a valid position");
}
}
});