所以我目前正在为我的大学课堂制作一个非常基本的收银机程序。基本上,每次我按下一个按钮,它都会加上一个总数,当我按下总数时,它会把所有的总数加起来。问题是,我似乎无法将变量中的值调用到total按钮中。它总是保持0.0,即使我在按下其他事件时使该变量具有值。我需要克服这一点,这样我就可以检查if语句是否正常工作。
最终的结果是,我可以通过按下不同的按钮组合来更改寄存器的总数。如果我按下一个按钮,就会得到一个总数。所以,如果我按下一次按钮,它只会是1.50。但如果我按两次,它将是3.0。我知道我可能应该为每个事件使用一个计数器,并获得该计数器与我正在设置的预定值的乘积。但现在我似乎无法解决我的总按钮事件的问题。这是我的代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BobsBurgerPanel extends JPanel
{
private int test1 = 1;
private double totalResult;
private double total1, total2, total3, total4, total5, total6;
private JButton push1, push2, push3, push4, push5, push6, total;
private JTextField text;
private JLabel label;
public BobsBurgerPanel()
{
push1 = new JButton("Small Drink");
push2 = new JButton("Large Drink");
push3 = new JButton("Small Fry");
push4 = new JButton("Large Fry");
push5 = new JButton("Veggie Burger");
push6 = new JButton("Bison Burger");
total = new JButton("Total");
label = new JLabel(" Your total is: ");
// Lining the text up with the JTectfield. t or n do not work.
text = new JTextField(10);
total.addActionListener(new TempListener());
add(push1);
add(push2);
add(push3);
add(push4);
add(push5);
add(push6);
add(total);
add(label);
add(text);
setPreferredSize(new Dimension(400,300));
setBackground(Color.red);
}
private class TempListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
int counter1 = 0, counter2 = 0, counter3 = 0,
counter4 = 0, counter5 = 0, counter6 = 0, counter7 = 0;
double totalR;
if (event.getSource() == push1)
{
counter1++;
total1 = counter1 * 1.50;
}
if (event.getSource() == push2)
{
counter2++;
total2 = counter2 * 2.10;
}
if (event.getSource() == push3)
{
counter3++;
total3 = counter3 * 2.00;
}
if (event.getSource() == push4)
{
counter4++;
total4 = counter4 * 2.95;
}
if (event.getSource() == push5)
{
counter5++;
total5 = counter5 * 4.55;
}
if (event.getSource() == push6)
{
counter6++;
total6 = counter6 * 7.95;
}
if (event.getSource() == total)
totalResult =
(total1+total2+total3+total4+total5+total6);
text.setText(Double.toString(totalResult));
}
}
任何帮助或额外的想法都将是伟大的。感谢阅读。
您的计数器变量被声明为局部变量,因此在每次迭代时都是0
。我建议您在方法之外声明它们,因为每次执行操作时都需要增加它们。
此外,由于您的代码一次只能处于一种状态,因此您将受益于else语句,而不仅仅是if.
老兄,您只在JButton total
中添加了侦听器。因此actionPerformed方法始终且仅通过if (event.getSource() == total)
totalResult =(total1+total2+total3+total4+total5+total6);
语句,因为JButton total
是单击事件的唯一来源。这就是为什么你一次又一次地得到0
。