java实现简单计算器功能
童鞋们,是不是有使用计算器的时候,还要进入运行,输入calc,太麻烦了,有时候甚至还忘记单词怎么拼写,呵呵
程序员自己写代码实现,又简单,又方便啊
以下为代码(想要生成可执行工具可参考:http://www.cnblogs.com/holdon521/p/4483966.html)
package com; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Font; import java.awt.GridLayout; 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; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.swing.border.EmptyBorder; public class Test extends JFrame{ /** * humphrey */ private static final long serialVersionUID = -9075562467166618473L; private JPanel contentPane; private JTextField display; private ActionListener insert = new InsertAction(); private ActionListener command = new CommandAction(); private double result = 0; private String lastCommand = "="; private boolean start = true; /** * Launch the application. */ public static void main(String[] args) { try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); } catch (Throwable e) { e.printStackTrace(); } EventQueue.invokeLater(new Runnable() { public void run() { try { Test frame = new Test(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Test() { setTitle("\u8BA1\u7B97\u5668"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationByPlatform(true); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); JPanel displayPanel = new JPanel(); contentPane.add(displayPanel, BorderLayout.NORTH); display = new JTextField(); display.setText("0"); display.setHorizontalAlignment(SwingConstants.RIGHT); display.setEditable(false); display.setFont(new Font("微软雅黑", Font.PLAIN, 15)); displayPanel.add(display); display.setColumns(13); JPanel buttonPanel = new JPanel(); contentPane.add(buttonPanel, BorderLayout.CENTER); buttonPanel.setLayout(new GridLayout(4, 4, 5, 5)); JButton number7Button = new JButton("7"); number7Button.addActionListener(insert); number7Button.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(number7Button); JButton number8Button = new JButton("8"); number8Button.addActionListener(insert); number8Button.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(number8Button); JButton number9Button = new JButton("9"); number9Button.addActionListener(insert); number9Button.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(number9Button); JButton divideButton = new JButton("/"); divideButton.addActionListener(command); divideButton.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(divideButton); JButton number4Button = new JButton("4"); number4Button.addActionListener(insert); number4Button.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(number4Button); JButton number5Button = new JButton("5"); number5Button.addActionListener(insert); number5Button.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(number5Button); JButton number6Button = new JButton("6"); number6Button.addActionListener(insert); number6Button.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(number6Button); JButton multiplyButton = new JButton("*"); multiplyButton.addActionListener(command); multiplyButton.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(multiplyButton); JButton number3Button = new JButton("1"); number3Button.addActionListener(insert); number3Button.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(number3Button); JButton number2Button = new JButton("2"); number2Button.addActionListener(insert); number2Button.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(number2Button); JButton number1Button = new JButton("3"); number1Button.addActionListener(insert); number1Button.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(number1Button); JButton subtractButton = new JButton("-"); subtractButton.addActionListener(command); subtractButton.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(subtractButton); JButton number0Button = new JButton("0"); number0Button.addActionListener(insert); number0Button.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(number0Button); JButton dotButton = new JButton("."); dotButton.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(dotButton); JButton equalButton = new JButton("="); equalButton.addActionListener(command); equalButton.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(equalButton); JButton addButton = new JButton("+"); addButton.addActionListener(command); addButton.setFont(new Font("微软雅黑", Font.PLAIN, 15)); buttonPanel.add(addButton); pack(); } private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent e) { String input = e.getActionCommand(); String text = display.getText(); if (start) { display.setText(""); start = false; } if (text.startsWith(".")) { display.setText("0" + display.getText() + input); } else if (text.startsWith("-0.") || text.startsWith("0.")) { display.setText(display.getText() + input); } else if (text.startsWith("-0")) { display.setText("-" + input); } else if (text.startsWith("0")) { display.setText(input); } else { display.setText(display.getText() + input); } } } private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if (start) { if (command.equals("-")) { display.setText(command); start = false; } else { lastCommand = command; } } else { calculate(Double.parseDouble(display.getText())); lastCommand = command; start = true; } } } public void calculate(double x) { char operator = lastCommand.charAt(0); switch (operator) { case '+': result += x; break; case '-': result -= x; break; case '*': result *= x; break; case '/': result /= x; break; case '=': result = x; break; } display.setText("" + result); } }
java实现简单计算器功能的更多相关文章
- [Java.web]简单计算器
项目的 WebRoot 目录下的 calculator.jsp <%@ page language="java" import="java.util.*" ...
- Java实现简单计算器、抽票程序
计算器: import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt. ...
- java实现简单计算器
首先利用字符串数组保存计算器上的按钮的标签名 private final String[] str = {"7","8","9"," ...
- Android-Kotlin简单计算器功能
上一篇博客 Android-Kotlin-配置/入门 配置好了 AndroidStudio Kotlin 的环境: 选择包名,然后右键: 选择Class类型,会有class: 创建CounterCla ...
- s12-day04-work01 简单计算器功能实现
代码: #!/usr/local/env python3 ''' Author:@南非波波 Blog:http://www.cnblogs.com/songqingbo/ E-mail:qingbo. ...
- Python之实现简单计算器功能
一,需求分析 要求计算一串包含数字+-*/()的类似于3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4)表达式的数值 二,知识点 正 ...
- 简单计算器 安卓 Android 作业
Android老师布置的课程作业——简单计算器 功能要求实现四则运算,参考界面见下图: 首先给各位老铁提供apk安装包以及项目压缩包,略表诚意~ github地址:https://github.com ...
- 完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能
#!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能'''try: a=int(raw_input(" ...
- Java语言编写计算器(简单的计算器)
Java编写的一个简单计算器,本人还比较菜,只能这样了,有点代码冗余,不能连续计算. import javax.swing.*; import java.awt.*; import java.awt. ...
随机推荐
- Java反射机制集中学习
什么是反射 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言 ...
- java中的集合和视图
一.集合的概念 何为集合,集合就是相当于一个对象的容器.集合是类似数组的一个作用.既然有了数组,为何还要有集合呢,由于数组对象一旦创建,其大小便不可以更改,我们只能往数组中存放创建时数量的对象.而集合 ...
- String变量的两种创建方式
在java中,有两种创建String类型变量的方式: String str01="abc";//第一种方式 String str02=new String("abc&qu ...
- Java设计模式—适配器模式
适配器模式的个人理解: 首先有一个目标角色.一个源角色还有一个适配器角色.我们要做的就是利用适配器角色将源角色转换为目标角色.而目标角色是一个正在良好运行的一个角色. 转换方法: (1) 适配器类继 ...
- Dubbo架构原理
1 Dubbo核心功能 Remoting:远程通讯,提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息交换方式. Cluster: 服务框架,提供基于接口方法的透明远程过程调用 ...
- C++之不带指针类的设计——Boolean
经典的类设计分类 带指针类 不带指针类 Header文件的布局 #ifndef __COMPLEX__ #define __COMPLEX__ #include <iostream.h> ...
- Recsys2018 music recomendation
http://www.recsyschallenge.com/2018/ January 2018 Release of the "One Million Playlists" d ...
- 【MATLAB】十进制字节矩阵与比特流矩阵的互相转化
for i=1:length(enc_out_data) data_bits_temp=dec2bin(enc_out_data(i),8); databits((i-1)*8+1:i*8)=doub ...
- day01-struts框架
一.框架概述 1.框架的意义与作用: 所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的经历放到业务需求的分析和理解上面. 特点:封装了很多细节,程序员在使用的时候会非常简单. 2 ...
- pnp4nagios 性能调优
http://popozhu.github.io/2014/03/12/pnp4nagios%E7%9A%84%E5%B9%B6%E5%8F%91/ rrd目录分层 bulk模式 修改模板 修改/pr ...