21xrx.com
2024-09-17 04:00:29 Tuesday
登录
文章检索 我的文章 写文章
JAVA简易计算器:实现过程与案例
2023-06-15 17:52:14 深夜i     --     --
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个

  
  

评论区

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