21xrx.com
2025-03-21 06:57:01 Friday
文章检索 我的文章 写文章
Java简易计算器实验心得及代码案例
2023-06-13 21:36:15 深夜i     --     --
Java 计算器 面向对象编程

近期在Java课程中学习了如何开发一个简易的计算器,感觉收获颇丰。通过这个项目,更加深刻地理解了Java的面向对象编程思想。在此分享一下我的实验心得以及相关代码案例。

实验流程:

1. 设计计算器的基本功能,如加、减、乘、除等。

2. 设计计算器的界面。

3. 通过Java Swing实现计算器界面的可视化。

4. 编写Java程序,实现计算器基本功能。

5. 进行测试并调试,验证程序的正确性。

实验代码:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Calculator extends JPanel implements ActionListener{
  
  private static final long serialVersionUID = 1L;
  private JButton button_num[]=new JButton[10]; // 数字按钮
  private JButton button_plus, button_minus, button_multiply, button_divide; // 加减乘除按钮
  private JButton button_clear, button_equal; // 清空和等于按钮
  private JTextField text_input; //输入框
  private double num1=0, num2=0, result=0; // 计算器的操作数和结果
  private int operator=0; // 记录操作符号
  public Calculator(){
    this.setPreferredSize(new Dimension(230, 260)); // 面板大小
    this.setLayout(new BorderLayout()); // 边框布局
    JPanel p1 = new JPanel(new FlowLayout()); // 创建面板1,采用流式布局
    text_input = new JTextField(16); // 创建文本框
    p1.add(text_input); // 将文本框添加到面板上
    this.add(p1, BorderLayout.NORTH); // 将面板1添加到北部
    JPanel p2 = new JPanel(new GridLayout(4,4)); // 创建面板2,采用网格布局
    for(int i=0; i<10; i++){
      button_num[i] = new JButton(String.valueOf(i)); // 数字按钮
      button_num[i].addActionListener(this); // 为数字按钮添加事件监听器
    }
    button_plus = new JButton("+"); // 加按钮
    button_plus.addActionListener(this); // 为加按钮添加事件监听器
    button_minus = new JButton("-"); // 减按钮
    button_minus.addActionListener(this); // 为减按钮添加事件监听器
    button_multiply = new JButton("*"); // 乘按钮
    button_multiply.addActionListener(this); // 为乘按钮添加事件监听器
    button_divide = new JButton("/"); // 除按钮
    button_divide.addActionListener(this); // 为除按钮添加事件监听器
    button_clear = new JButton("C"); // 清空按钮
    button_clear.addActionListener(this); // 为清空按钮添加事件监听器
    button_equal = new JButton("="); // 等于按钮
    button_equal.addActionListener(this); // 为等于按钮添加事件监听器
    p2.add(button_num[1]);
    p2.add(button_num[2]);
    p2.add(button_num[3]);
    p2.add(button_plus);
    p2.add(button_num[4]);
    p2.add(button_num[5]);
    p2.add(button_num[6]);
    p2.add(button_minus);
    p2.add(button_num[7]);
    p2.add(button_num[8]);
    p2.add(button_num[9]);
    p2.add(button_multiply);
    p2.add(button_clear);
    p2.add(button_num[0]);
    p2.add(button_equal);
    p2.add(button_divide);
    this.add(p2, BorderLayout.CENTER); // 将面板2添加到中央
  }
  public void actionPerformed(ActionEvent ev){
    Object source = ev.getSource(); // 获取事件源
    String actionCommand = ev.getActionCommand();// 获取事件命令
    if(source==button_clear){
      text_input.setText(""); // 清空文本框
      num1 = 0;
      num2 = 0;
      result = 0;
      operator = 0; // 初始化变量
    }else if(source==button_equal){
      num2 = Double.parseDouble(text_input.getText()); // 获取第二个操作数
      switch(operator){
      case 1:
        result = num1 + num2; // 加法运算
        break;
      case 2:
        result = num1 - num2; // 减法运算
        break;
      case 3:
        result = num1 * num2; // 乘法运算
        break;
      case 4:
        result = num1 / num2; // 除法运算
        break;
      }
      text_input.setText(String.valueOf(result)); // 显示结果
    }else{
      for(int i=0; i<10; i++){
        if(source == button_num[i]){ // 数字按钮
          text_input.setText(text_input.getText()+String.valueOf(i));
        }
      }
      if(source==button_plus){ // 加号
        operator = 1;
        num1 = Double.parseDouble(text_input.getText()); // 获取第一个操作数
        text_input.setText(""); // 设置文本框为空
      }else if(source==button_minus){ // 减号
        operator = 2;
        num1 = Double.parseDouble(text_input.getText()); // 获取第一个操作数
        text_input.setText(""); // 设置文本框为空
      }else if(source==button_multiply){ // 乘号
        operator = 3;
        num1 = Double.parseDouble(text_input.getText()); // 获取第一个操作数
        text_input.setText(""); // 设置文本框为空
      }else if(source==button_divide){ // 除号
        operator = 4;
        num1 = Double.parseDouble(text_input.getText()); // 获取第一个操作数
        text_input.setText(""); // 设置文本框为空
      }
    }
  } 
  
  public static void main(String[] args){
    JFrame frame = new JFrame();
    frame.setTitle("Calculator"); // 设置窗口标题
    frame.setSize(240,300); // 设置窗口大小
    Calculator calculator = new Calculator();
    frame.add(calculator); // 将面板添加到窗口上
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null); // 居中显示
    frame.setVisible(true); // 设置窗口可见
  }
}

实验心得:

Java的面向对象编程思想让我们能够快速高效地实现计算器的开发,同时也让代码更易于维护。通过本次实验,我学会了利用Java Swing进行用户界面的设计和实现,并掌握了Java中的面向对象编程技巧。这对于后续的开发工作将有很大的帮助。

关键词:

Java、计算器、面向对象编程

  
  

评论区