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.返回值的作用 函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值.函数返回的值被称为返回值.在函数中,可使用return语句将值返回到调用函数的代码行.返回值让你能够将程序的大 ...
- 服务器word权限添加
我们的程序部署到IIS上会出现上图所示的错误. 这个是由于IIS没有权限访问word所致. 解决的方法: 在运行对话框中输入: mmc -32 出来如下图的界面: 然后点击"文件&q ...
- scss-比较运算符
与JavaScript类似,scss中也有比较运算符,下面就分别做一下介绍. 一.==相等和!=不相等运算符: 此运算符用来判断两个操作数是否相等. 特别说明: 上面两个运算符,支持类似于JavaSc ...
- Ubuntu16.04安装Hadoop2.6+Spark1.6+开发实例
Ubuntu16.04安装Hadoop2.6+Spark1.6,并安装python开发工具Jupyter notebook,通过pyspark测试一个实例,調通整个Spark+hadoop伪分布式开发 ...
- Git 基本知识与常用指令
一.Git代码状态转换图 其中: 未被Git跟踪的状态为unstage状态: 已被Git跟踪的状态为stage状态(stage:阶段),因此包括staging状态和staged状态. untrack ...
- python 读写Oracle10g数据简介
1.测试环境: Centos6 X86_64python 2.6 Oracle 10g 2.安装cx_Oracle 和 Oracle InstantClient: http://www.rpmfind ...
- 随学笔记 partAdded
随学笔记: RectangularDropShadow为矩形对象添加阴影,DropShadowFilter可以为任意形状对象添加阴影. BorderContainer和Panel等容器使用的就是Rec ...
- linux搭建nginx图片服务器
1:参考http://blog.csdn.net/u012401711/article/details/53525908
- ExecutorService的invokeAny方法
一.此方法获得最先完成任务的结果,即Callable<T>接口中的call的返回值,在获得结果时,会中断其他正在执行的任务 示例代码: import java.util.ArrayList ...
- SQL转Linq工具的使用——Linqer
官方下载网站:http://www.sqltolinq.com/ 本文介绍版本为Linqer 4.5.7 第一步:下载下来,解压,双击安装.exe文件,运行界面如下. 第二步:建立与数据库的连接 点击 ...