复数计算实验变形

题目

‬‬编写复数运算的 Application 程序:
(1)设计复数类 Complex,具有实部、虚部两个属性,能完成复数的加、
减、乘三种运算。
(2)使用 Application 创建一图形用户界面程序,界面如下,程序运行时,
用户可在“复数 1”后面的对应文本框中输入第一个复数的实部和虚部,在“复
数 2”后面的对应文本框中输入第二个复数的实部和虚部,在“运算符”后面
的文本框中输入“+”或“-”或“*”运算符号,当用户按下“=”按钮后,程
序调用复数类 Complex 的对应方法,将运算结果(计算得到的复数的实部和虚
部)显示在其后排列的两个文本框中。

示例

在这里插入图片描述

参考代码

ComplexFrame 类


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ComplexFrame extends JFrame {
    private JTextField jTextField1;
    private JTextField jTextField2;
    private JTextField jTextField3;
    private JTextField jTextField4;
    private JTextField jTextField5;
    private JButton jButton;
    private JTextField jTextField7;
    private JTextField jTextField8;
    public ComplexFrame() throws HeadlessException {
        //初始化
        init();
        //按键监听
        buttonActionListener();
    }

    private void init() {
        setTitle("复数计算器");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(new GridLayout(4,1));
        setSize(300,300);
        setLocationRelativeTo(null);


        jTextField1 = new JTextField(5);
        jTextField2 = new JTextField(5);
        jTextField3 = new JTextField(5);
        jTextField4 = new JTextField(5);
        jTextField5 = new JTextField(5);
        jButton = new JButton("=");
        jTextField7 = new JTextField(5);
            jTextField7.setEnabled(false);
        jTextField8 = new JTextField(5);
            jTextField8.setEnabled(false);

        JPanel jPanel1 = new JPanel();
        JPanel jPanel2 = new JPanel();
        JPanel jPanel3 = new JPanel();
        JPanel jPanel4 = new JPanel();

        jPanel1.add(new JLabel("复数1"));
        jPanel1.add(jTextField1);
        jPanel1.add(new JLabel("+"));
        jPanel1.add(jTextField2);
        jPanel1.add(new JLabel("i"));

        jPanel2.add(new JLabel("运算符"));
        jPanel2.add(jTextField3);

        jPanel3.add(new JLabel("复数2"));
        jPanel3.add(jTextField4);
        jPanel3.add(new JLabel("+"));
        jPanel3.add(jTextField5);
        jPanel3.add(new JLabel("i"));

        jPanel4.add(jButton);
        jPanel4.add(jTextField7);
        jPanel4.add(new JLabel("+"));
        jPanel4.add(jTextField8);
        jPanel4.add(new JLabel("i"));;

        add(jPanel1);
        add(jPanel2);
        add(jPanel3);
        add(jPanel4);

        setVisible(true);
    }

    //按键监听
    private void buttonActionListener(){
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e  ) {
                String str = jTextField3.getText();
                if ("/*\\-\\+".indexOf(str) != -1){
                    new CalculationComplex().calculation();
                }else {
                    JOptionPane.showMessageDialog(null,"请输入正确的运算符");
                }

            }
        });
    }

    //计算类
    public class CalculationComplex{
        private double real1,com1;
        private double real2,com2;
        //判断是否数据为空
        public void judge() {
            if (!jTextField1.getText().equals("")) {
                real1 = Double.parseDouble(jTextField1.getText());
            }else {
                real1 = 0.0;
            }
            if (!jTextField2.getText().equals("")) {
                com1 = Double.parseDouble(jTextField2.getText());
            }else {
                com1 = 0.0;
            }
            if (!jTextField4.getText().equals("")) {
                real2 = Double.parseDouble(jTextField4.getText());
            }else {
                real2 = 0.0;
            }
            if (!jTextField5.getText().equals("")) {
                com2 = Double.parseDouble(jTextField5.getText());
            }else {
                com2 = 0.0;
            }
        }
        public void calculation() {
            this.judge();
            if (jTextField1.getText().equals("") && jTextField1.getText().equals("")
                    && jTextField1.getText().equals("") && jTextField1.getText().equals("")) {
                JOptionPane.showMessageDialog(null, "请填入数据", "注意", JOptionPane.WARNING_MESSAGE);
            }else if (jTextField3.getText().equals("")) {
                JOptionPane.showMessageDialog(null, "请填入运算符", "注意", JOptionPane.WARNING_MESSAGE);
            }
            if(jTextField3.getText().equals("+")) {
                this.addition();
            }else if (jTextField3.getText().equals("-")) {
                this.subtraction();
            }else if (jTextField3.getText().equals("*")) {
                this.multiplication();
            }else if (jTextField3.getText().equals("/")) {
                if (jTextField4.getText().equals("") &&
                        jTextField5.getText().equals("") ||
                        Double.parseDouble(jTextField4.getText()) == 0.0 &&
                                Double.parseDouble(jTextField5.getText()) == 0.0 ||
                        jTextField4.getText().equals("") &&
                                Double.parseDouble(jTextField5.getText()) == 0.0 ||
                        jTextField5.getText().equals("") &&
                                Double.parseDouble(jTextField4.getText()) == 0.0) {
                    JOptionPane.showMessageDialog(null, "除数的实部和虚部不能同时为0!","注意!",JOptionPane.ERROR_MESSAGE);
                }else {
                    this.division();
                }
            }
        }

        //加法
        private void addition() {
            jTextField7.setText(""+ (real1+real2));
            jTextField8.setText("" + (com1+com2));
        }

        //减法
        private void subtraction() {
            jTextField7.setText(""+ (real1-real2));
            jTextField8.setText("" + (com1-com2));
        }

        //乘法
        private void multiplication() {
            jTextField7.setText(""+ (real1*real2 - com1*com2));
            jTextField8.setText("" + (com1*real2 + real1*com2));
        }

        //除法
        private void division() {
            double real = (real1*real2 + com1*com2) / (Math.pow(real2, 2) + Math.pow(com2, 2));
            double com = (com1*real2 - real1*com2) / (Math.pow(real2, 2) + Math.pow(com2, 2));
            jTextField7.setText(""+ real);
            jTextField8.setText("" + com);
        }
    }

    public static void main(String[] args) {
        new ComplexFrame();
    }

}

运行结果

在这里插入图片描述

说明

个人能力有限,仅供参考,共同学习!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无奈清风吹过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值