21xrx.com
2024-11-22 13:26:24 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、计算器、面向对象编程

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复