java程序,用图形实现乘除运算

java程序,用图形实现乘除运算带运行结果图

简易的计算器代码如下,请参照:

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * 计算器类
 * 
 * @author Administrator
 *
 */
public class Calculator extends JFrame implements ActionListener {
    
    private static final long serialVersionUID = 3868243398506940702L;
    
    // 文本框
    private JTextField result;
    // 按钮数组
    private JButton[] buttons;
    // 按钮文本
    private final String[] characters = { "7", "8", "9", "/", "4", "5", "6",
            "*", "1", "2", "3", "-", "0", ".", "=", "+" };
    // 是否为第一个输入的数字
    private boolean isFirstDigit = true;
    // 运算结果
    private double resultNum = 0.0;
    // 运算符
    private String operator = "=";

    public Calculator(String title) {
        // 设置标题栏
        super(title);
        // 初始化各组件
        init();
        // 注册各组件监听器
        registerListener();

        // 显示窗体
        setVisible(true);
    }

    /**
     * 初始化各组件
     */
    private void init() {
        // 常用属性初始化
        setSize(220, 200);
        setResizable(false);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        /* 文本框对象初始化 */
        result = new JTextField("0");
        // 文本右对齐
        result.setHorizontalAlignment(JTextField.RIGHT);
        // 设置是否可编辑
        result.setEditable(false);
        /* 按钮初始化 */
        buttons = new JButton[characters.length];
        for (int i = 0; i < buttons.length; i++) {
            buttons[i] = new JButton(characters[i]);
            buttons[i].setFocusable(false); // 不允许按钮定位焦点
        }
        /* 将文本框与按钮添加到窗体中 */
        add(result, BorderLayout.NORTH);
        JPanel pnl = new JPanel(new GridLayout(4, 4, 5, 5));
        for (JButton jButton : buttons) {
            pnl.add(jButton);
        }
        add(pnl);

        this.getContentPane().setFocusable(true);
    }

    /**
     * 注册监听器
     */
    private void registerListener() {
        for (JButton jButton : buttons) {
            jButton.addActionListener(this);
        }

        // 注册键盘事件
        this.getContentPane().addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                String text = String.valueOf(e.getKeyChar());
                if (Character.isDigit(text.charAt(0)) || ".".equals(text)) { // 数字或小数点
                    handleNumber(text);
                } else if ("+-*/=".indexOf(text) != -1) { // 运算符
                    handleOperator(text);
                } else if (e.getKeyCode() == 8) { // 退格键
                    String tmp = result.getText().trim();
                    if (tmp.length() == 1) {
                        result.setText("0");
                        isFirstDigit = true;
                    } else {
                        result.setText(tmp.substring(0, tmp.length() - 1));
                    }
                }
            }
        });
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton btn = (JButton) e.getSource();
        String text = btn.getText().trim();

        if (Character.isDigit(text.charAt(0)) || ".".equals(text)) { // 处理数字和小数点
            handleNumber(text);
        } else { // 处理运算符
            handleOperator(text);
        }
    }

    /**
     * 处理数字和小数点
     * 
     * @param text
     */
    private void handleNumber(String text) {
        if (isFirstDigit) { // 第一次输入
            if (".".equals(text)) {
                this.result.setText("0.");
            } else {
                this.result.setText(text);
            }
        } else if ("0".equals(text) && "0".equals(this.result.getText())) {
            isFirstDigit = true;
            return;
        } else if (".".equals(text) && this.result.getText().indexOf(".") == -1) {
            this.result.setText(this.result.getText() + ".");
        } else if (!".".equals(text)) {
            this.result.setText(this.result.getText() + text);
        }

        isFirstDigit = false;
    }

    /**
     * 处理运算符
     * 
     * @param text
     */
    private void handleOperator(String text) {
        switch (operator) { // 处理各项运算  适用于JDK1.7版本的
        case "+":
            resultNum += Double.parseDouble(this.result.getText());
            break;
        case "-":
            resultNum -= Double.parseDouble(this.result.getText());
            break;
        case "*":
            resultNum *= Double.parseDouble(this.result.getText());
            break;
        case "/":
            resultNum /= Double.parseDouble(this.result.getText());
            break;
        case "=":
            resultNum = Double.parseDouble(this.result.getText());
            break;
        }
        // 将文本框的值修改为运算结果
        this.result.setText(String.valueOf(resultNum));
        // 将点击的运算符放入operator保存
        operator = text;
        // 下一个数字第一次点击
        isFirstDigit = true;
    }
    
    public static void main(String[] args) {
              new Calculator("My Calculator");
          }
}

运行结果如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-27
1、新建一个java类,定义加法的方法。定义方式为声明两个变量,然后相加,赋给第三个变量,并使用return返回出来。
2、在第一步中的java类中,定义减法的方法。定义方式跟加法类似,只要把加法中的“+”号修改为“-”,再修改方法名。
3、在第一步中的java类中,定义乘法的方法。定义方式为声明两变量相乘并赋值,返回的类型不再是int,一般则定义为double。
4、在第一步中的java类中,定义除法的方法。与乘法基本一样。除数不能为0,所以要进行判断一下。
5、最后在main函数中,实例化该java类,并通过实例化的别名点方法名实现调用加减乘除的方法(如:例子中的TestHello test = new TestHello();test.sum(8, 9);),右键运行控制台打印出结果。
6、补充一下:细心的同学,应该注意到通过实例化的别名点方法名又赋值给另外一个变量,这个也可以省略,直接修改为System.out.println(int sum = test.sum(8, 9));这种方式打印出来。本回答被网友采纳
相似回答