题目
编写复数运算的 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();
}
}
运行结果
说明
个人能力有限,仅供参考,共同学习!