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. ...
随机推荐
- jquery解析xml
更多的项目都是在解析json,今天临时让解析几个xml文件,其实都一样,总结一下吧. 例如我们有这样一个xml文件 <?xml version="1.0" encoding= ...
- Java内部类详解 2
Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...
- GIS中的坐标系定义与转换
GIS中的坐标系定义与转换 青岛海洋地质研究所 戴勤奋 2002-3-27 14:22:47 ----------------------------------------------------- ...
- 【Linux】动态链接函数库
动静区别 1. gcc –c mylib.c –o mylib.o 2. gcc -shared -fPIC mylib.o -o libmylib.so 3. 将制作好的libmylib.so 复制 ...
- 如何获得ImageView中的图像
我们知道在Android中ImageView是一个用于显示图像的控件,比如在很多联系人方面的应用中,需要为联系人拍摄头像,并将得到的头像放在一个 ImageView对象中显示.通常,在没有为联系人拍摄 ...
- android,getExternalStorageDirectory()和getExternalFilesDir()的区别
转载地址:https://blog.csdn.net/nugongahou110/article/details/48154859 之前看到一位网友的吐槽:当我把手机连接到电脑上时,在SD卡根目录看到 ...
- css 字体样式设置
css字体样式(Font Style),属性 时间:2014-05-08 21:49 来源:我爱学习网 | 作者:我爱学习网 | 本文已影响 68353 人 css字体样式(Font Style) ...
- java面试题之----JVM架构和GC垃圾回收机制详解
JVM架构和GC垃圾回收机制详解 jvm,jre,jdk三者之间的关系 JRE (Java Run Environment):JRE包含了java底层的类库,该类库是由c/c++编写实现的 JDK ( ...
- 基于iframe的CFS(Cross Frame Script)和Clickjacking(点击劫持)攻击
攻击原理: CFS攻击(Cross Frame Script(跨框架脚本)攻击)是利用浏览器允许框架(frame)跨站包含其它页面的漏洞,在主框架的代码 中加入scirpt,监视.盗取用户输入 ...
- 我的HTML总结之表单
表单是Web中实现交互的重要方法,用于收集用户信息并提交给服务器. 表单中的9大控件 <input type="text" name="key" va ...