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. ...
随机推荐
- python数据处理
1.数据清洗 1.1 数据格式化 数据格式化是数据清洗常见的形式之一,就是将可读性差的或无法阅读的数据转换成可读性较强的数据格式. python对字符串和数字都有格式化的方法,如%s, %d分别代表格 ...
- git本地分支关联远程分支
问题描述: 从远程master克隆下来以后, 在本地创建wf_dev分支, 此时执行git pull 操作出现图中问题. 这是因为:本地的wf_dev分支还没有和远程的wf_dev进行关联. 执行: ...
- A bug about RecipientEditTextView
- Steps to reproduce the problem. Pre-condition:the threshold of the RecipientEditTextView is set to ...
- C#利用事件与委托进行窗体间传值简单小例子
本篇博客是利用C#委托与事件进行窗体间传值的简单小例子 委托与事件的详细解释大家可以参照张子阳的博客: http://www.tracefact.net/CSharp-Programming/Dele ...
- phpmyadmin杂记
看着坑爹的教程..我老是报错我也很无奈啊 以下几项必改 $cfg['blowfish_secret'] = ' ';//这里引号内是空格,实际上可以是任意内容, $cfg['Servers'][$i] ...
- Python爬虫《爬取get请求的页面数据》
一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...
- 沙箱模式的chrome浏览器的运行
getUserMedia在chrome 47后已经不可以从非安全源访问(Insecure Origins),但测试搭建apprtc时服务器一般没有添加HTTPS安全验证,chrome就没有权限访问麦克 ...
- .Net常用的命名空间
-----------常用的命名空间--------地狱的镰刀 System.Collections //命名空间包含接口和类,这些接口和类定义各种对象(如列表.队列.位数组.哈希表和字典)的集合. ...
- Eclipse Startup
First of all, we take a look at class EclipseStarter /********************************************** ...
- MapReduce框架结构及代码示例
一个完整的 mapreduce 程序在分布式运行时有三类实例进程: 1.MRAppMaster:负责整个程序的过程调度及状态协调 2.MapTask:负责 map 阶段的整个数据处理流程 3.Redu ...