import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;

public class Calculator1 extends JFrame implements ActionListener {
JTextField text;
static boolean isFirst = true;
double number = 0.0;
public static String s = "0";
double value,sum;
int n;
//主函数
public static void main(String[] args){
new Calculator1();
}
//构造方法
public Calculator1(){
JFrame mywindow = new JFrame();
mywindow.setTitle("我的计算器V-1");
mywindow.setSize(250,250);
mywindow.setLocation(400,300);
mywindow.setResizable(false);
mywindow.setLayout(new BorderLayout());

JPanel panel1 = new JPanel(new FlowLayout());
JPanel panel2 = new JPanel(new GridLayout(4, 4));
text = new JTextField("0",20);
text.setEditable(false);
panel1.add(text);
mywindow.add("North", panel1);
mywindow.add("Center", panel2);

String[] array = {"7","8","9","C","4","5","6","+","1","2","3","-","0","*","/","="};
JButton[] buttons = new JButton[array.length];
for(int i=0;i<array.length;i++){
buttons[i] = new JButton(array[i]);
panel2.add(buttons[i]);
}
for(int i=0;i<buttons.length;i++){
buttons[i].addActionListener(this);
}
mywindow.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String oldstr = text.getText();
String label = e.getActionCommand();
if(label.equals("C")){
s="0";

value= 0;
sum = 0;

text.setText(s);
}
else if("+-*/=0123456789".indexOf(label) > 4){
handNumber(label);
}else{
handOperator(label);
}
}
//操作数字函数
public void handNumber(String num){
if(s.equals("0"))
s = num;
else
s = s + num;
text.setText(s);
}
//操作符号函数
public void handOperator(String operator){
value = Double.valueOf(s);
switch(n)
{
case 0:sum = value;break;
case 1:sum = sum + value;break;
case 2:sum = sum - value;break;
case 3:sum = sum * value;break;
case 4:sum = sum / value;break;
}
if(operator.equals("=")){n = 0;}
if(operator.equals("+")){n = 1;}
if(operator.equals("-")){n = 2;}
if(operator.equals("*")){n = 3;}
if(operator.equals("/")){n = 4;}
s = String.valueOf(sum);
if(operator.equals("=")){
text.setText(s);
} else{
text.setText(s+operator);
s= "0";
}

}
}

一段简单的手写Java计算器代码的更多相关文章

  1. 6 手写Java LinkedHashMap 核心源码

    概述 LinkedHashMap是Java中常用的数据结构之一,安卓中的LruCache缓存,底层使用的就是LinkedHashMap,LRU(Least Recently Used)算法,即最近最少 ...

  2. 3 手写Java HashMap核心源码

    手写Java HashMap核心源码 上一章手写LinkedList核心源码,本章我们来手写Java HashMap的核心源码. 我们来先了解一下HashMap的原理.HashMap 字面意思 has ...

  3. 手写JAVA虚拟机(二)——实现java命令行

    查看手写JAVA虚拟机系列可以进我的博客园主页查看. 我们知道,我们编译.java并运行.class文件时,需要一些java命令,如最简单的helloworld程序. 这里的程序最好不要加包名,因为加 ...

  4. AI应用开发实战 - 手写算式计算器

    扩展手写数字识别应用 识别并计算简单手写数学表达式 主要知识点 了解MNIST数据集 了解如何扩展数据集 实现手写算式计算器 简介 本文将介绍一例支持识别手写数学表达式并对其进行计算的人工智能应用的开 ...

  5. 手写JAVA虚拟机(三)——搜索class文件并读出内容

    查看手写JAVA虚拟机系列可以进我的博客园主页查看. 前面我们介绍了准备工作以及命令行的编写.既然我们的任务实现命令行中的java命令,同时我们知道java命令是将class文件(字节码)转换成机器码 ...

  6. 4.redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?

    作者:中华石杉 面试题 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当 ...

  7. redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现?

    redis的过期策略都有哪些? 设置过期时间: set key 的时候,使用expire time,就是过期时间.指定这个key比如说只能存活一个小时?10分钟?指定缓存到期就会失效. redis的过 ...

  8. 2 手写Java LinkedList核心源码

    上一章我们手写了ArrayList的核心源码,ArrayList底层是用了一个数组来保存数据,数组保存数据的优点就是查找效率高,但是删除效率特别低,最坏的情况下需要移动所有的元素.在查找需求比较重要的 ...

  9. 阿里第二轮面试:手写Java二叉树

    阿里面试 现在很多公司在招聘开发岗位的时候,都会事先在招聘信息中注明面试者应当具备的知识技能,而且在面试的过程中,有部分对于技能掌握程度有严格要求的公司还会要求面试者手写代码,这个环节很考验面试者的基 ...

随机推荐

  1. java中间变量缓存机制

    public class Demo { public static void main(String[] args){ method_1(); method_2(); } private static ...

  2. 2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div. 2) S Surf

    SurfNow that you've come to Florida and taken up surng, you love it! Of course, you've realized that ...

  3. Python Tricks(十九)—— switch 的实现

    python 原生语法不支持 switch,体现了 Python 大道至简的设计思路,有时为了避免啰嗦的 if elif等判断语句,我们可以用字典来代替 switch 的各分支,也即建立表达式和操作的 ...

  4. ZOJ2107 Quoit Design 最近点对

    ZOJ2107 给定10^5个点,求距离最近的点对的距离. O(n^2)的算法是显而易见的. 可以通过分治优化到O(nlogn) 代码很简单 #include<iostream> #inc ...

  5. Spark 2.2.0 分布式集群环境搭建

    集群机器: 1台 装了 ubuntu 14.04的 台式机 1台 装了ubuntu 16.04 的 笔记本     (机器更多时同样适用) 1.需要安装好Hadoop分布式环境 参照:Hadoop分类 ...

  6. 【高德地图API】地理编码与逆地理编码

    一.地理编码 该功能实现地理编码服务,即地址匹配,从已知的地址描述到对应的经纬度坐标的转换,即根据地址信息,查询该地址所对应的点坐标等,地址(address) 为必选项,城市(city)为可选项. & ...

  7. 2-3 原生小程序 - 项目app.json配置

    App.json它其实有四五个配置,但是最重要的是pages.windows和tabbar.tabbar是做导航的处理的. 官方推荐的入门配置之一: app.json 它其实有一些字段是限制了这个格式 ...

  8. 解决 jquery dialog 弹框destroy销毁方法不能把弹出元素设置成初始状态

    在使用jquery ui中的dialog弹出窗口的时候遇到一个问题,就是页面弹出窗口关闭后希望表单元素能回到初始状态 例如文本框输入内容后关闭dialog后里面的内容清除,使用了destroy方法也不 ...

  9. Commons-FileUpload 常用API

    ServerFileUpload类的常用方法 方法名称 方法描述 public void setSizeMax(long sizeMax) 设置请求信息实体内容的最大允许的字节数 public Lis ...

  10. bzoj 1854: [Scoi2010]游戏【匈牙利算法】

    没啥可说的,就是一边属性一边道具建二分图,把两个属性都连到道具上,然后枚举匹配,如果无法匹配就输出,时间戳优化 #include<iostream> #include<cstdio& ...