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. ...
随机推荐
- 通过js控制层的动态隐藏
<style type="text/css"> #dv1{ width:1000px; height:1000px; overflow:hidden; display: ...
- js之可迭代对象
遍历Array可以采用下标循环,遍历Map和Set就无法使用下标.为了统一集合类型,ES6标准引入了新的iterable类型,Array.Map和Set都属于iterable类型. 具有iterabl ...
- 【Spring Boot】集成Netty Socket.IO通讯框架
服务端 @Configuration public class NettySocketConfig { private static final Logger logger = LoggerFacto ...
- Objective C 中的BOOL, bool, Boolean理解
一. 1.类型不同 BOOL为int型 bool为布尔型 2.长度不同 bool只有一个字节 BOOL长度视实际环境来定,一般可认为是4个字节 3.取值不同 bool取值false和true,是0和1 ...
- 【嵌入式】安装Linux系统到开发板
一.开发板基本介绍 Flash --相当于硬盘 RAM -- 内存 Micro USB或232串口 连电脑 USB 接口连摄像头 启动方式 选择开关 :SD卡启动或NAND FLASH 启动 USB转 ...
- 2017年Nature文章“Millions of online book co-purchases reveal partisan differences in the consumption of science”阅读笔记
论文: Millions of online book co-purchases reveal partisan differences in the consumption of scie ...
- struts-config.xml 中 action 与 forward 的重要属性
1.forward 的 redirect 可以为true.false(默认).yes.no true和yes一样,false和no一样: redirect="false",容器内跳 ...
- 网络威胁防护,Azure 靠的是它?
在当今数字化转型的浪潮中,越来越多的企业希望转型于云.使用云能帮助企业提高工作效率.降低 IT 成本.增强竞争优势,有效推动企业的业务发展.但是,在向云迁移的过程中,基于云的数据中心更有可能被攻击,所 ...
- Java框架安全
(一)Mybatis注入问题 Mybatis是目前比较常用的ORM的框架,一般与SpringMVC框架整合较多,但使用不当会有SQL注入的风险. Mybatis里mapper中SQL语句的写法支持两种 ...
- 【量产工具修复】U盘插上没反应,格式化提示有写保护
最近在实验室发现师兄留下的U盘,插上电脑后打不开,弹出格式化界面,格式化的时候又提示该u盘“被写保护无法格式化”,于是打算采用量产的方法. 第一步:使用chipgenius监测u盘的芯片制造商和型号 ...