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. ...
随机推荐
- setInterval()的三种写法
前言: setInterval("fun()",time)有两个参数:fun()为要执行的函数:time为多久执行一次函数,单位是毫秒: 我们做一个简单的例子,就是每隔5s弹出一个 ...
- JavaScript数组求和
<script> function demo(){ var d=document.getElementsByTagName("input")[0].value.spli ...
- spark编程python实例
spark编程python实例 ValueError: Cannot run multiple SparkContexts at once; existing SparkContext(app=PyS ...
- Linux c获取时间
linux c获得时间和设置时间 #include<time.h> //C语言的头文件 #include<stdio.h> //C语言的I/O void main() { ti ...
- python ftp download with progressbar
i am a new one to learn Python. Try to download by FTP. search basic code from baidu. no one tells h ...
- BeginInvoke和EndInvoke方法
本系列教程主要包括如下内容:1. BeginInvoke和EndInvoke方法 2. Thread类 3. 线程池 4. 线程同步基础 5. 死锁 6. 线程同步的7种方法 7. 如何在线程中访问G ...
- mysql导入大量数据时报MySQL server has gone away错误的解决办法
https://blog.csdn.net/eric520zenobia/article/details/77619469
- I want to be a Great Web Front-end Developer
有时觉得特别的浮躁,可能是每天春运般的挤地铁,随处可见因为一点小磕小蹭吹胡子瞪眼睛的人,可能是身边的人貌似一下子都好有钱,买房买车或者买第N套房. 很想静下来心寻找到自己inner pace,但是忽然 ...
- url规范化:解决从baidu.com到www.baidu.com的
通过 301重定向可以实现 把www.baidu.com和baidu.com合并,并把之前的域名也一并合并. 有两种实现方法: 第一种方法是判断nginx核心变量host(别名功能): server ...
- RedHat 6.4源码方式安装mysql5.5
参考文档:http://dev.mysql.com/downloads/file/?id=463397 下载地址http://dev.mysql.com/doc/refman/5.7/en/ 文档地址 ...