如何在Action侦听器中进行算术计算

liuwk:

我应该制作一个gui,允许人们通过输入要订购的食物数量来订购食物,然后显示该商品的总价。但是,我的有助于计算餐费的代码行出现错误,提示未定义“ *”运算符。我的.getText()是否也正确使用?我如何解决它?随时帮助指出我在编码方面可以改进的其他方面。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.ComponentOrientation;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class LunchGUI implements ActionListener {

static JFrame frame;
static JPanel topPanel,panel;   
static JLabel adult,kid,salad,dessert,price;
static JTextField adultq,kidq,saladq,dessertq;
static JButton confirm;

public static void main(String []args) {

    Font font = new Font("Courier", Font.BOLD,24);
    Color Color = new Color(249,206,188);

    frame = new JFrame("Lunch Menu");
    //define a new layout
    frame.setLayout(new BorderLayout());
    //panel for label 
    topPanel = new JPanel();
    panel = new JPanel();
    panel.setBackground(Color);
    topPanel.setBackground(Color);
    panel.setLayout(new GridLayout(5, 2, 0, 20));
    panel.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
    panel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);     

    adult = new JLabel("  Adult Lunch Set $20 Quantity :");            
    adult.setFont(font);
    adult.setBackground(java.awt.Color.CYAN);
    adult.setOpaque(true);

    adultq = new JTextField ("0");
    adultq.setFont(font);
    adultq.setBackground(java.awt.Color.CYAN);
    adultq.setOpaque(true);

    kid = new JLabel("  Kids Lunch Set $12  Quantity :");            
    kid.setFont(font);
    kid.setBackground(java.awt.Color.CYAN);
    kid.setOpaque(true);

    kidq = new JTextField ("0");
    kidq.setFont(font);
    kidq.setBackground(java.awt.Color.CYAN);
    kidq.setOpaque(true);

    salad = new JLabel("  Salad Side $4       Quantity :");            
    salad.setFont(font);
    salad.setBackground(java.awt.Color.CYAN);
    salad.setOpaque(true);

    saladq = new JTextField ("0");
    saladq.setFont(font);
    saladq.setBackground(java.awt.Color.CYAN);
    saladq.setOpaque(true);

    dessert = new JLabel("  Dessert $5          Quantity :");            
    dessert.setFont(font);
    dessert.setBackground(java.awt.Color.CYAN);
    dessert.setOpaque(true);

    dessertq = new JTextField ("0");
    dessertq.setFont(font);
    dessertq.setBackground(java.awt.Color.CYAN);
    dessertq.setOpaque(true);

    confirm = new JButton("Confirm");            
    confirm.setFont(font);
    confirm.setBackground(java.awt.Color.CYAN);
    confirm.setOpaque(true);

    JLabel label = new JLabel("What would you like to order?");
    label.setFont(font);

    JLabel price = new JLabel("2323");
    price.setFont(font);
    price.setBackground(Color);
    price.setOpaque(true);

    panel.add(adult);
    panel.add(adultq);
    panel.add(kid);
    panel.add(kidq);
    panel.add(salad);
    panel.add(saladq);
    panel.add(dessert);
    panel.add(dessertq);
    panel.add(confirm);     
    panel.add(price);

    topPanel.add(label);
    topPanel.setSize(200, 30);
    //rearrange panels on frame
    frame.add(topPanel, BorderLayout.NORTH);
    frame.add(panel, BorderLayout.CENTER);

    frame.setSize(1000, 800);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    confirm.addActionListener(new LunchGUI());
}
@Override
public void actionPerformed(ActionEvent e) {
    String adultamt = adultq.getText();
    String kidamt = kidq.getText();
    String saladamt = saladq.getText();
    String dessertamt = dessertq.getText();
    String total = (20*adultamt)+(14*kidamt)+(4*saladamt)+(5*dessertamt);
    price.setText(total);

}


}
恶棍:

这里的问题是,您正在尝试使用字符串来计算总数,这是行不通的。在Java中,您只能使用固定的算术数据类型(例如int,double,...)进行这些算术计算。因此,在计算之前,您需要做的是将检索.getText()的字符串解析为一个int值。

int adultamt = Integer.parseInt(adultq.getText());

然后计算总数并将其解析回String。

int total = (20 * adultamt) + ....;
price.setText(String.valueOf(total));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章