java实现简单计算器功能

使用java来实现一个简单的计算器,供大家参考,具体内容如下

最近使用java制作了一个计算器,菜单栏里的功能没有实现,只是写一个版式,仅仅实现了计算功能 ,如果想要实现菜单栏功能可自行在该代码的基础上去实现。

话不多说直接上代码

package test;

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

 public class calculate extends JFrame implements ActionListener {
  private Container ct;
  private JButton[] jbs;
  private String[] str;
  private JTextField jTextField;
  //cal[0]用来存储第一次输入的数
  //cal[1]用来存储运算符(+,-,*,/,%)
  //cal[2]用来存储第二次输入的数
  //cal[3]用来存储结果
  //cal[4]用来存储MS键所存储的数
  //cal[5]用来获取要存入的值(用来给cal[4]赋值)
  private String[] cal = {"","","","","",""};
  //_count和_count1始终相反,如果_count为true则表示正在输入cal[0]反之表示cal[0]输入完成,该输入cal[2]
  //当点过等号后将cal[3]的值赋给cal[0]
  private boolean _count = true;
  private boolean _count1 = false;

  public calculate() {
   super("计算器");
   jbs = new JButton[28];
   ct = this.getContentPane();
   this.setBounds(100, 100, 315, 400);
   this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
   ct.setLayout(null);
   //菜单栏
   JMenuBar jMenuBar = new JMenuBar();
   JMenu jm = new JMenu("查看(V)");
   JMenu jm1 = new JMenu("编辑(E)");
   JMenu jm2 = new JMenu("帮助(H)");
   jMenuBar.add(jm);
   jMenuBar.add(jm1);
   jMenuBar.add(jm2);
   this.setJMenuBar(jMenuBar);
   //输出框
   jTextField = new JTextField("0");
   jTextField.setFont(new Font("宋体", Font.BOLD, 25));
   jTextField.setEditable(false);
   jTextField.setHorizontalAlignment(JTextField.RIGHT);
   jTextField.setBounds(5, 5, 285, 65);
   ct.add(jTextField);
   //按键    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
   str = new String[]{"MC", "MR", "MS", "M+", "M-", "←", "CE", "C", "±", "√", "7", "8", "9", "/", "%", "4", "5", "6", "*", "1/x", "1", "2", "3", "-", "=", "0", ".", "+"};
   int k = 0;
   for (int i = 75; i <= 195; i = i + 40) {
    for (int init = 10; init <= 290; init = init + 57) {
     JButton jButton = new JButton(str[k]);
     jbs[k] = jButton;
     jButton.setBounds(init, i, 52, 35);
     ct.add(jButton);
     k++;
     System.out.println(k);
    }
   }
   for (int i = 235; i < 265; i = i + 40) {
    for (int j = 10; j <= 181; j = j + 57) {
     JButton jButton = new JButton(str[k]);
     jButton.setBounds(j, i, 52, 35);
     ct.add(jButton);
     jbs[k] = jButton;
     k++;
     System.out.println(k);
    }
   }
   JButton jButton = new JButton(str[k]);
   jbs[k] = jButton;
   k++;
   System.out.println(k);
   jButton.setBounds(240, 235, 52, 75);
   ct.add(jButton);
   JButton jButton2 = new JButton(str[k]);
   System.out.println(str[k]);
   jButton2.setBounds(10, 275, 109, 35);
   ct.add(jButton2);
   jbs[k] = jButton2;
   k++;
   for (int i = 275; i < 310; i = i + 40) {
    for (int j = 124; j <= 181; j = j + 57) {
     JButton jButton1 = new JButton(str[k]);
     jButton1.setBounds(j, i, 52, 35);
     ct.add(jButton1);
     jbs[k] = jButton1;
     k++;
    }
   }
   for (int i = 0; i < 28; i++) {
    jbs[i].addActionListener(this);
   }
   this.setVisible(true);
  }

  public static void main(String[] args) {
   new calculate();
  }

  @Override
  public void actionPerformed(ActionEvent actionEvent) {
   if (actionEvent.getActionCommand().equals(".")){
    method(actionEvent);
   }else if (actionEvent.getActionCommand().equals("0")){
    method(actionEvent);
   } else if (actionEvent.getActionCommand().equals("1")){
    method(actionEvent);
   }else if(actionEvent.getActionCommand().equals("2")){
    method(actionEvent);
   }else if (actionEvent.getActionCommand().equals("3")){
    method(actionEvent);
   }else if (actionEvent.getActionCommand().equals("4")){
    method(actionEvent);
   }else if (actionEvent.getActionCommand().equals("5")){
    method(actionEvent);
   }else if (actionEvent.getActionCommand().equals("6")){
    method(actionEvent);
   }else if (actionEvent.getActionCommand().equals("7")){
    method(actionEvent);
   }else if (actionEvent.getActionCommand().equals("8")){
    method(actionEvent);
   }else if (actionEvent.getActionCommand().equals("9")){
    method(actionEvent);
   }else if (actionEvent.getActionCommand().equals("±")){
    if(_count){
     if (cal[0].contains(".")){
      cal[0] = String.valueOf(Double.parseDouble(cal[0]) * (-1));
      jTextField.setText(cal[0]);
     }else {
      cal[0] = String.valueOf(Integer.parseInt(cal[0]) * (-1));
      jTextField.setText(cal[0]);
     }
    }else {
     if (cal[2].contains(".")){
      cal[2] = String.valueOf(Double.parseDouble(cal[2]) * (-1));
      jTextField.setText(cal[2]);
     }else {
      cal[2] = String.valueOf(Integer.parseInt(cal[2]) * (-1));
      jTextField.setText(cal[2]);
     }
    }
   }else if(actionEvent.getActionCommand().equals("√")){
    if(_count){
     cal[0] = String.valueOf(Math.pow(Double.parseDouble(cal[0]),0.5));
     jTextField.setText(cal[0]);
    }else {
     cal[2] = String.valueOf(Math.pow(Double.parseDouble(cal[2]),0.5));
     jTextField.setText(cal[2]);
    }
   }else if(actionEvent.getActionCommand().equals("1/x")){
    if(_count){
     cal[0] = String.valueOf(1/Double.parseDouble(cal[0]));
     jTextField.setText(cal[0]);
    }else {
     cal[2] = String.valueOf(1/Double.parseDouble(cal[2]));
     jTextField.setText(cal[2]);
    }
   }else if(actionEvent.getActionCommand().equals("←")){
    if(_count){
     cal[0] = cal[0].substring(0,cal[0].length()-1);
     if(cal[0].equals("")){
      jTextField.setText("0");
     }else {
      jTextField.setText(cal[0]);
     }
    }else {
     cal[2] = cal[2].substring(0,cal[2].length()-1);
     if(cal[2].equals("")){
      jTextField.setText("0");
     }else {
      jTextField.setText(cal[2]);
     }
    }
   }else if(actionEvent.getActionCommand().equals("CE")){
    if (_count){
     cal[0]="";
     jTextField.setText("0");
    }else {
     cal[2]="";
     jTextField.setText("0");
    }
   }else if(actionEvent.getActionCommand().equals("C")){
    _count = true;
    cal[0]="";
    cal[1]="";
    cal[2]="";
    cal[3]="";
    jTextField.setText("0");
   }else if (actionEvent.getActionCommand().equals("+")){
    if (!cal[0].equals("")&&!cal[2].equals("")){
     if (cal[0].contains(".") || cal[2].contains(".")){
      cal[0]=String.valueOf(Double.parseDouble(cal[0]) + Double.parseDouble(cal[2]));
     }else {
      cal[0] = String.valueOf(Integer.parseInt(cal[0]) + Integer.parseInt(cal[2]));
     }
     cal[2]="";
    }
    cal[1] = "+";
    _count=false;
    jTextField.setText(cal[1]);
   }else if (actionEvent.getActionCommand().equals("-")){
    if (!cal[0].equals("")&&!cal[2].equals("")){
     if (cal[0].contains(".") || cal[2].contains(".")){
      cal[0]=String.valueOf(Double.parseDouble(cal[0]) - Double.parseDouble(cal[2]));
     }else {
      cal[0] = String.valueOf(Integer.parseInt(cal[0]) - Integer.parseInt(cal[2]));
     }
     cal[2]="";
    }
    cal[1] = "-";
    _count=false;
    jTextField.setText(cal[1]);
   }else if (actionEvent.getActionCommand().equals("*")){
    if (!cal[0].equals("")&&!cal[2].equals("")){
     if (cal[0].contains(".") || cal[2].contains(".")){
      cal[0]=String.valueOf(Double.parseDouble(cal[0]) * Double.parseDouble(cal[2]));
     }else {
      cal[0] = String.valueOf(Integer.parseInt(cal[0]) * Integer.parseInt(cal[2]));
     }
     cal[2]="";
    }
    cal[1] = "*";
    _count=false;
    jTextField.setText(cal[1]);
   }else if (actionEvent.getActionCommand().equals("/")){
    if (!cal[0].equals("")&&!cal[2].equals("")){
     if (cal[0].contains(".") || cal[2].contains(".")){
      cal[0]=String.valueOf(Double.parseDouble(cal[0]) / Double.parseDouble(cal[2]));
     }else {
      cal[0] = String.valueOf(Integer.parseInt(cal[0]) / Integer.parseInt(cal[2]));
     }
     cal[2]="";
    }
    cal[1] = "/";
    _count=false;
    jTextField.setText(cal[1]);
   }else if (actionEvent.getActionCommand().equals("%")){
    cal[0]=String.valueOf(Integer.parseInt(cal[0]) % Integer.parseInt(cal[2]));
    cal[2]="";
    cal[1] = "%";
    _count=false;
    jTextField.setText(cal[1]);
   }else if (actionEvent.getActionCommand().equals("=")){
    if(cal[0].equals("")&&cal[2].equals("")){
     jTextField.setText("0");
    }else if(!cal[0].equals("")&&cal[2].equals("")){
     jTextField.setText(cal[0]);
    }else if(!cal[0].equals("")&&!cal[2].equals("")){
     if(cal[1].equals("+")){
      if (cal[0].contains(".") || cal[2].contains(".")){
       cal[3]=String.valueOf(Double.parseDouble(cal[0]) + Double.parseDouble(cal[2]));
      }else {
       cal[3] = String.valueOf(Integer.parseInt(cal[0]) + Integer.parseInt(cal[2]));
      }
      jTextField.setText(cal[3]);
     }else if (cal[1].equals("-")){
      if (cal[0].contains(".") || cal[2].contains(".")){
       cal[3]=String.valueOf(Double.parseDouble(cal[0]) - Double.parseDouble(cal[2]));
      }else {
       cal[3] = String.valueOf(Integer.parseInt(cal[0]) - Integer.parseInt(cal[2]));
      }
      jTextField.setText(cal[3]);
     }else if(cal[1].equals("*")){
      if (cal[0].contains(".") || cal[2].contains(".")){
       cal[3]=String.valueOf(Double.parseDouble(cal[0]) * Double.parseDouble(cal[2]));
      }else {
       cal[3] = String.valueOf(Integer.parseInt(cal[0]) * Integer.parseInt(cal[2]));
      }
      jTextField.setText(cal[3]);
     }else if (cal[1].equals("/")){
      if (cal[0].contains(".") || cal[2].contains(".")){
       cal[3]=String.valueOf(Double.parseDouble(cal[0]) / Double.parseDouble(cal[2]));
      }else {
       cal[3] = String.valueOf(Integer.parseInt(cal[0]) / Integer.parseInt(cal[2]));
      }
      jTextField.setText(cal[3]);
     }else if (cal[1].equals("%")){
      cal[3]=String.valueOf(Integer.parseInt(cal[0]) % Integer.parseInt(cal[2]));
      jTextField.setText(cal[3]);
     }
    }
    cal[0]=cal[3];
    cal[2]="";
    _count=true;
    _count1 = true;
    cal[5]=cal[0];
   }else if(actionEvent.getActionCommand().equals("MC")){
    cal[4]="";
   }else if(actionEvent.getActionCommand().equals("MR")){
    if(_count){
     if(!cal[4].equals("")){
      cal[0]=cal[4];
      jTextField.setText(cal[0]);
     }
    }else {
     if(!cal[4].equals("")){
      cal[2]=cal[4];
      jTextField.setText(cal[2]);
     }
    }
   }else if(actionEvent.getActionCommand().equals("MS")){
    if(_count){
     cal[0]="";
    }
    cal[4]=cal[5];
    System.out.println("cal[5]"+cal[5]);
    System.out.println("ms:"+cal[4]);
   }else if(actionEvent.getActionCommand().equals("M+")){
    if(!cal[4].equals("")){
     if (cal[4].contains(".") || cal[5].contains(".")){
      cal[4]=String.valueOf(Double.parseDouble(cal[4]) + Double.parseDouble(cal[5]));
     }else {
      cal[4] = String.valueOf(Integer.parseInt(cal[4]) + Integer.parseInt(cal[5]));
     }
    }
   }else if(actionEvent.getActionCommand().equals("M-")){
    if(!cal[4].equals("")){
     if (cal[4].contains(".") || cal[5].contains(".")){
      cal[4]=String.valueOf(Double.parseDouble(cal[4]) - Double.parseDouble(cal[5]));
     }else {
      cal[4] = String.valueOf(Integer.parseInt(cal[4]) - Integer.parseInt(cal[5]));
     }
    }
   }
  }
  public void method(ActionEvent actionEvent){
   if(_count){
    if (_count1){
     cal[0]="";
     _count1=false;
    }
    cal[0] += actionEvent.getActionCommand();
    cal[5]=cal[0];
    System.out.println(cal[5]);
   }else {
    cal[2] += actionEvent.getActionCommand();
    cal[5]=cal[2];
   }
   jTextField.setText(actionEvent.getActionCommand());
  }
}

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 用Java实现简单计算器功能

    本项目为大家分享了Java实现简单计算器功能的具体代码,供大家参考,具体内容如下 一 项目说明 实训目的:掌握 Java GUI 开发中的布局管理和事件处理机制. 实训要求: (1)要使用 java 的 GUI 设计出计算器界面. (2)通过界面按钮,可以实现整数或浮点数的四则运算,并能将结果显示在界面中. (3)计算可以有小数点,和正负整数的计算. (4)要有清零功能. 二.类设计 中缀表达式的计算solution(String str) 用来中算后缀表达式的值,并将结果返回.准备一个数字栈,

  • java实现简单计算器功能

    使用java来实现一个简单的计算器,供大家参考,具体内容如下 最近使用java制作了一个计算器,菜单栏里的功能没有实现,只是写一个版式,仅仅实现了计算功能 ,如果想要实现菜单栏功能可自行在该代码的基础上去实现. 话不多说直接上代码 package test; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public

  • Android开发实现的简单计算器功能【附完整demo源码下载】

    本文实例讲述了Android开发实现的简单计算器功能.分享给大家供大家参考,具体如下: 这个Android计算器虽然还有点小bug,不过简单的计算功能还是没问题的哦: 先上图看效果 比较简单,所以我就没怎么写注释,应该一看就能明白的 有不明白的可以发信问我 先贴MainActivity.java代码 package com.example.calculator; import android.app.Activity; import android.os.Bundle; import andro

  • Android Studio实现简单计算器功能

    本文实例为大家分享了Android Studio实现简单计算器功能的具体代码,供大家参考,具体内容如下 程序步骤: (1)在布局文件定义一些计算器界面的文本框,按钮等组件. (2)在Activity中获取组件实例. (3)通过swtich函数,判断输入的内容,并进行相应操作,通过getText()获取文本内容,setText()显示. 程序代码设计: 一.界面布局 参考书本例2-9,应用网格布局设计计算器界面,在设计区域设置一个6行4列的网格布局,第一行为显示数据的文本标签,第二行为清除数据的按

  • Java编写简单计算器的完整实现过程

    前言 本文用Java的swing来实现一个简单计算器,主要内容为图形用户界面GUI的实现以及运算表达式核心算法的设计编写. 程序运行环境为Windows10 ,编译环境为MyEclipse . 一.具体功能: 1.:输入,输出 输入:允许输入带有括号的完整计算式(例 8*(4-95)+5÷2*e-pi) 输出:输出Double类型的结果 输出:整个运算表达式并保存于历史记录中 2.:功能 基本的加,减,乘,除,四则运算  平方运算  开方运算  求余运算 最终界面如下图: 除了常规的数字按钮和运

  • Java实现简单计算器小程序

    本文实例为大家分享了Java实现简单计算器小程序的具体代码,供大家参考,具体内容如下 这学期没事学了一点点Java,想写个程序练手,因为只学了一点点,所以暂时只能先写个实现简单功能的计算器练练. 由于期末来了,没太多时间,所以暂时就实现最简单的功能. 个人不喜欢用大量文字记叙程序,而且该程序也相对简单,所以直接画了张程序框架图,再配合代码的注释,就明白程序的原理了. 图 计算器程序框架 代码如下: package tst.jframe; import java.awt.EventQueue; i

  • 基于javascript实现简单计算器功能

    本文实例为大家介绍javascript实现简单计算器功能的详细代码,分享给大家供大家参考,具体内容如下 效果图: 实现代码: <html> <head> <script> function calc(event){ // test //window.alert(event.value); var val = new String(event.value); // clear space val = val.trim(); var res = document.getEl

  • JavaScript实现的超简单计算器功能示例

    本文实例讲述了JavaScript实现的超简单计算器功能.分享给大家供大家参考,具体如下: 先来看看运行效果: 具体代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>www.jb51.net JS计算器</title> <script type="text/javascript&qu

  • java实现的计算器功能示例【基于swing组件】

    本文实例讲述了java实现的计算器功能.分享给大家供大家参考,具体如下: package awtDemo; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.s

  • java实现简易计算器功能

    本文为大家分享了java实现简易计算器功能,具体内容如下 题目: 编写一个模拟计算器的程序.在面板中添加一个文本框(显示按键及运算结果). 10个数字按钮(0~9).4个运算按钮(加.减.乘.除).一个等号按钮.一个清除按钮, 要求将按键和结果显示在文本框中. 代码过程展示: import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.Action

随机推荐