java实现简单的计算器类实例_java

本文实例讲述了java实现简单的计算器类。分享给大家供大家参考。具体如下:

package chap;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Calculator {
  private JFrame frame;
  private JPanel panel,panelKeys,panelKeys_up,panelKeys_down;
  private JTextField textComputer;//计算区域
  private JButton buttonBk,buttonC;//退格键和清零键
  private JButton button[];//数字键组
  private JButton buttonDot,buttonAddSub,buttonAdd,buttonSub,buttonMul,buttonDiv,button1,button2,button3,buttonEqual;
  private double result;//计算结果
  private final short ADD = 1;
  private final short SUB = 2;
  private final short MUL = 3;
  private final short DIV = 4;
  private short operator = -1;//运算符
  public Calculator(){
    frame = new JFrame("计算机");
    frame.setSize(400, 250);
    panel = new JPanel();//全局面板
    panel.setVisible(true);
    frame.setVisible(true);
    frame.getContentPane().add(panel);
    ActionListener listener = new ComputerActionListener();//按键监听器
    //计算区
    textComputer = new JTextField(15);
    textComputer.setText("");
    textComputer.setEditable(false);
    textComputer.setBackground(new Color(255,255,255));
    //功能键上半部分
    panelKeys_up = new JPanel();
    panelKeys_up.setLayout(new FlowLayout(FlowLayout.RIGHT));
    buttonBk = new JButton("Backspace");
    buttonBk.setForeground(new Color(255,0,0));
    buttonC = new JButton("C");
    buttonC.setForeground(new Color(255,0,0));
    buttonBk.addActionListener(listener);
    buttonC.addActionListener(listener);
    panelKeys_up.add(buttonBk);
    panelKeys_up.add(buttonC);
    //功能键下半部分
    panelKeys_down = new JPanel();
    panelKeys_down.setLayout(new GridLayout(4,5));
    button = new JButton[10];
    for(int i = 0;i < button.length;i++){
      button[i] = new JButton(Integer.toString(i));
      button[i].setForeground(new Color(255,0,0));
    }
    buttonAddSub = new JButton("+/-");
    buttonAddSub.setForeground(new Color(255,0,0));
    buttonAdd = new JButton("+");
    buttonAdd.setForeground(new Color(255,0,0));
    buttonSub = new JButton("-");
    buttonSub.setForeground(new Color(255,0,0));
    buttonMul = new JButton("*");
    buttonMul.setForeground(new Color(255,0,0));
    buttonDiv = new JButton("/");
    buttonDiv.setForeground(new Color(255,0,0));
    button1 = new JButton();
    button2 = new JButton();
    button3 = new JButton();
    button1.setForeground(new Color(255,0,0));
    button2.setForeground(new Color(255,0,0));
    button3.setForeground(new Color(255,0,0));
    buttonEqual = new JButton("=");
    buttonEqual.setForeground(new Color(255,0,0));
    buttonAddSub.addActionListener(listener);
    buttonAdd.addActionListener(listener);
    buttonSub.addActionListener(listener);
    buttonMul.addActionListener(listener);
    buttonDiv.addActionListener(listener);
    buttonEqual.addActionListener(listener);
    for(int i = 0 ; i <=9 ; i++){
      button[i].addActionListener(listener);
    }
    for(int i = 0 ; i <=9 ; i++){
      panelKeys_down.add(button[i]);
    }
    panelKeys_down.add(buttonAddSub);
    panelKeys_down.add(buttonAdd);
    panelKeys_down.add(buttonSub);
    panelKeys_down.add(buttonMul);
    panelKeys_down.add(buttonDiv);
    panelKeys_down.add(buttonEqual);
    panel.setLayout(new BorderLayout());
    panel.add(textComputer,BorderLayout.NORTH);
    panel.add(panelKeys_up,BorderLayout.CENTER);
    panel.add(panelKeys_down,BorderLayout.SOUTH);
  }
  class ComputerActionListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent event) {
      // TODO Auto-generated method stub
      Object keyButton = event.getSource();
      String text = textComputer.getText();
      DecimalFormat df = new DecimalFormat("0.###########");
      //Backspace
      if(keyButton == buttonBk && text.length() > 0){
        textComputer.setText(text.substring(0,text.length()-1));
      }
      //C键
      if(keyButton == buttonC){
        result = 0;
        textComputer.setText("");
      }
      //数字键
      for(int i=0;i<10;i++){
        if(keyButton == button[i]){
          textComputer.setText(text+i);
        }
      }
      if(keyButton == buttonAdd){
        operator = 1;
      }
      if(keyButton == buttonSub){
        operator = 2;
      }
      if(keyButton == buttonMul){
        operator = 3;
      }
      if(keyButton == buttonDiv){
        operator = 4;
      }
      //符号键
      if(keyButton == buttonAdd || keyButton == buttonSub || keyButton == buttonMul || keyButton == buttonDiv || keyButton == buttonEqual){
        switch(operator){
        case ADD:
          result += Double.parseDouble(text);
          break;
        case SUB:
          result -=Double.parseDouble(text);
          break;
        case MUL:
          result *=Double.parseDouble(text);
          break;
        case DIV:
          result /=Double.parseDouble(text);
          break;
        default:
          result = Double.parseDouble(text);
        }
        textComputer.setText("");
      }
      if(keyButton == buttonEqual){
        textComputer.setText(String.valueOf(result));
      }
    }
  }
  public static void main(String args[]){
    new Calculator();
  }
}

希望本文所述对大家的java程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
计算器类
java实现简单计算器、jquery实现简单计算器、简单计算器单片机实现、js实现简单网页计算器、mfc实现简单计算器,以便于您获取更多的相关知识。

时间: 2024-12-21 11:26:56

java实现简单的计算器类实例_java的相关文章

Java Web 简单的分页显示实例代码_java

本文通过两个方法:(1)计算总的页数. (2)查询指定页数据,实现简单的分页效果. 思路:首先得在 DAO 对象中提供分页查询的方法,在控制层调用该方法查到指定页的数据,在表示层通过 EL 表达式和 JSTL 将该页数据显示出来. 先给大家展示下效果图: 题外话:该分页显示是用 "表示层-控制层-DAO层-数据库"的设计思想实现的,有什么需要改进的地方大家提出来,共同学习进步.废话不多说了,开始进入主题,详细步骤如下所示: 1.DAO层-数据库 JDBCUtils 类用于打开和关闭数据

JAVA时间日期处理类实例_java

本文实例讲述了JAVA时间日期处理类,主要用来遍历两个日期之间的每一天.分享给大家供大家参考.具体如下: /** * * 文 件 名: AccountDate.java * * 创建时间: 2008-11-18 * * Email : **@163.com */ import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.A

java实现简单注册选择所在城市_java

本文实例为大家分享了java实现简单注册选择所在城市的全部代码,供大家参考,具体内容如下 1.activity_main.xml     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.an

java中的十个大类总结_java

认为编写一个类的列表,深受程序员.我应该说是最重要的?这里没有严格的规则的选择,事实上,也没有规则.类出现在顶部的心态,列举如下.欢迎您加入你自己的名单.本列表将取决于类型的项目上工作.这些类,我已经列出不需要任何介绍,他们是受欢迎的拉兹尼堪世界中.玩得开心. 1,.java.lang.string字符串类将是无可争议的冠军在任何一天的普及和不可以否认.这是最后一个类,用来创建操作不可变字符串字面值. 2.java.lang.system用法系统取决于类型的项目,你的工作.你可以不使用它在您的项

分享java打印简单图形的实现代码_java

我们平时都是使用的画图工具进行简单图形的绘制,今天我们使用java打印一些简单的图形 实现代码如下 package test; /** * * @author hanzel * @打印图形 * */ public class Array { public static void main(String[] args) { //打印长方形 int[] a = new int[10]; for(int i=0 ;i<a.length;i++){ for(int j=0;j<a.length;j++

JAVA实现简单系统登陆注册模块_java

前期准备 首先要先明确有个大体的思路,要实现什么样的功能,了解完成整个模块要运用到哪些方面的知识,以及从做的过程中去发现自己的不足.技术方面的进步大都都需要从实践中出来的.功能:用户注册功能+系统登录功能+生成验证码知识:窗体设计.数据库设计.JavaBean封装属性.JDBC实现对数据库的连接.验证码(包括彩色验证码)生成技术,还有就些比如像使用正则表达式校验用户注册信息.随机获得字符串.对文本可用字符数的控制等设计的模块预览图: 彩色验证码预览图: 所用数据库:MySQL 数据库设计 创建一

PHP简单数据库操作类实例【支持增删改查及链式操作】_php技巧

本文实例讲述了PHP简单数据库操作类.分享给大家供大家参考,具体如下: 在进行项目开发时,数据库是必不可少的东西了.但是很多时候却又对数据库SQL语句的繁杂而感到头疼.提供一个我自己使用的数据库操作类(模型Model),供大家使用.支持增.删.改.查,支持链式操作,代码不到100行,非常小巧方便,很适合小项目的快速部署使用. /** * * @Authot: summer * * @E-mail: wenghang1228@me.com * * @Data: 2015-02-06 * * @Pr

CI框架简单邮件发送类实例_php实例

本文实例讲述了CI框架简单邮件发送类.分享给大家供大家参考,具体如下: ci框架绝对是php初学中想要的东西,它能极大的缩短你的代码量! 下面看看我的发送邮件的简单演示: function email() { $this->load->library('email'); $config['protocol'] = 'smtp'; $config['smtp_host'] = 'smtp.163.com'; $config['smtp_user'] = 'jb51@163.com';//这里写上

CI框架简单邮件发送类实例

本文实例讲述了CI框架简单邮件发送类.分享给大家供大家参考,具体如下: ci框架绝对是php初学中想要的东西,它能极大的缩短你的代码量! 下面看看我的发送邮件的简单演示: function email() { $this->load->library('email'); $config['protocol'] = 'smtp'; $config['smtp_host'] = 'smtp.163.com'; $config['smtp_user'] = 'jb51@163.com';//这里写上