21xrx.com
2025-03-21 16:16:53 Friday
文章检索 我的文章 写文章
JAVA简易计算器:实现过程与案例
2023-06-15 17:52:14 深夜i     11     0
JAVA 简易计算器 GUI

在本篇文章中,我们将会探讨如何使用JAVA语言设计并实现一个简易计算器。在这个项目中,我们将会使用JAVA的基础知识和技巧来构建一个GUI用户界面,并实现基本计算功能。下面是代码实现过程:

首先,我们需要使用JAVA的Swing类构建GUI框架,这个框架包括计算器的各个部分,如数字键、运算符键、小数点键、等于键、清除键等。在这些键中,我们可以使用Swing的JButton来完成按钮的设计和功能的实现。

接下来,我们需要实现计算器的基本运算逻辑,这些逻辑包括加减乘除、小数点运算、清除操作等。我们可以使用JAVA的基本运算符和数学函数库来实现这些逻辑。

最后,我们需要将GUI和运算逻辑相结合,实现一个完全的、能够完成基本计算操作的JAVA简易计算器。通过这个计算器,我们可以进行多种运算,进行数据的输入、输出、保存等功能。

代码案例:

可以参考以下代码实现:

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class JavaCalculator extends JFrame {
 private static final long serialVersionUID = 1L;
 JPanel[] row = new JPanel[5];
 JButton[] button = new JButton[19];
 String[] buttonString = { "7", "8", "9", "/", "4", "5", "6", "*",
   "1", "2", "3", "-", ".", "C", "=", "+", "0", "(", ")" };
 int[] dimW = 300;
 int[] dimH = 40 ;
 Dimension displayDimension = new Dimension(dimW[0], dimH[0]);
 Dimension regularDimension = new Dimension(dimW[1], dimH[1]);
 Dimension rColumnDimension = new Dimension(dimW[2], dimH[1]);
 Dimension zeroButDimension = new Dimension(dimW[3], dimH[1]);
 boolean[] function = new boolean[4];
 double[] temporary = 0 ;
 JTextField display = new JTextField(20);
 Font font = new Font("Times new Roman", Font.BOLD, 14);
 JavaCalculator() {
  super("Java计算器");
  setDesign();
  setSize(350, 250);
  setResizable(false);
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  GridLayout grid = new GridLayout(5, 5);
  setLayout(grid);
  for (int i = 0; i < 4; i++)
   function[i] = false;
  FlowLayout f1 = new FlowLayout(FlowLayout.CENTER);
  FlowLayout f2 = new FlowLayout(FlowLayout.CENTER, 1, 1);
  for (int i = 0; i < 5; i++)
   row[i] = new JPanel();
  row[0].setLayout(f1);
  for (int i = 1; i < 5; i++)
   row[i].setLayout(f2);
  for (int i = 0; i < 19; i++) {
   button[i] = new JButton();
   button[i].setText(buttonString[i]);
   button[i].setFont(font);
   button[i].addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ae) {
     buttonaction(ae.getActionCommand());
    }
   });
  }
  display.setFont(font);
  display.setEditable(false);
  display.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
  display.setPreferredSize(displayDimension);
  for (int i = 0; i < 14; i++)
   button[i].setPreferredSize(regularDimension);
  for (int i = 14; i < 18; i++)
   button[i].setPreferredSize(rColumnDimension);
  button[18].setPreferredSize(zeroButDimension);
  row[0].add(display);
  add(row[0]);
  for (int i = 0; i < 4; i++)
   row[1].add(button[i]);
  row[1].add(button[14]);
  add(row[1]);
  for (int i = 4; i < 8; i++)
   row[2].add(button[i]);
  row[2].add(button[15]);
  add(row[2]);
  for (int i = 8; i < 12; i++)
   row[3].add(button[i]);
  row[3].add(button[16]);
  add(row[3]);
  row[4].add(button[18]);
  for (int i = 12; i < 14; i++)
   row[4].add(button[i]);
  row[4].add(button[17]);
  add(row[4]);
  setVisible(true);
 }
 public final void setDesign() {
  try {
   UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
  } catch (Exception e)
  
 }
 public void buttonaction(String input) {
  if (input.charAt(0) >= '0' && input.charAt(0) <= '9'
    || input.charAt(0) == '.') {
   display.setText(display.getText() + input);
  } else
   if(input.charAt(0) == 'C') {
   clear();
  } else
   if(input.charAt(0) == '=') {
   calculate();
  } else {
   operator(input);
  }
 }
 public void clear() {
  display.setText("");
  for (int i = 0; i < 4; i++)
   function[i] = false;
  for (int i = 0; i < 2; i++)
   temporary[i] = 0;
 }
 public void operator(String input) {
  if (input.charAt(0) == '+') {
   temporary[0] = Double.parseDouble(display.getText());
   function[0] = true;
   display.setText("");
  } else if (input.charAt(0) == '-') {
   temporary[0] = Double.parseDouble(display.getText());
   function[1] = true;
   display.setText("");
  } else if (input.charAt(0) == '*') {
   temporary[0] = Double.parseDouble(display.getText());
   function[2] = true;
   display.setText("");
  } else if (input.charAt(0) == '/') {
   temporary[0] = Double.parseDouble(display.getText());
   function[3] = true;
   display.setText("");
  }
 }
 public void calculate() {
  double temp;
  temporary[1] = Double.parseDouble(display.getText());
  String output = "";
  if (function[0] == true) {
   temp = temporary[0] + temporary[1];
   output = Double.toString(temp);
  } else if (function[1] == true) {
   temp = temporary[0] - temporary[1];
   output = Double.toString(temp);
  } else if (function[2] == true) {
   temp = temporary[0] * temporary[1];
   output = Double.toString(temp);
  } else if (function[3] == true) {
   temp = temporary[0] / temporary[1];
   output = Double.toString(temp);
  }
  display.setText(output);
  for (int i = 0; i < 4; i++)
   function[i] = false;
 }
 public static void main(String[] arguments) {
  JavaCalculator calc = new JavaCalculator();
 }
}

3个

  
  

评论区