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. HDU5465/BestCoder Round #56 (div.2) 二维树状数组

    Clarke and puzzle 问题描述 克拉克是一名人格分裂患者.某一天,有两个克拉克(aa和bb)在玩一个方格游戏. 这个方格是一个n*mn∗m的矩阵,每个格子里有一个数c_{i, j}c​i ...

  2. java Bean及其使用

    1 getter/setter方法 java例子: public class student { private String name; public String getName() { retu ...

  3. delphi中URL的汉字编码

    delphi中URL的汉字编码 show.asp?sort=全部&sortlevel=1&gorq=供&n=5&sitename=全部&img=yes& ...

  4. CANopen——总线基本知识

    1. 总线标准 2. 获取索引和子索引 2fh,2bh,23h,40h等,是不是对应cs的不同值: 主站1280h的对象字典?1280h-sub2,得到client的COB-ID值: 根据收到的m-& ...

  5. Tarjan求桥

    传送门(poj3177) 这道题是Tarjan求桥的模板题.大意是要求在原图上加上数量最少的边,使得整张图成为一个边双联通分量. 具体的做法是,先在图中求出所有的桥,之后把边双联通分量缩成点,这样的话 ...

  6. POJ1265 Area 多边形内格点数 Pick公式

    POJ1265给定一个多边形 计算边上的格点 内部的格点 以及多边形的面积 利用Pick公式  面积=内部格点数+边上格点数/2-1 将多边形分割为三角形容易证得上述公式 计算面积用叉积,计算边上格点 ...

  7. xargs 主要用于不支持管道的shell命令*****

    变量置换,主要用于不支持管道的shell命令,如:rm.sed等,但有些命令需要占位符“{}”需要注意.比如:删除文件- ls|xargs -i rm -rf {} 文件改名-   ls|xargs ...

  8. 洛谷P3366 【模板】最小生成树(Kruskal)

    题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz 输入输出格式 输入格式: 第一行包含两个整数N.M,表示该图共有N个结点和M条无向边.(N<=5000,M<= ...

  9. [C++ STL] 迭代器(iterator)详解

    背景:指针可以用来遍历存储空间连续的数据结构,但是对于存储空间非连续的,就需要寻找一个行为类似指针的类,来对非数组的数据结构进行遍历.因此,我们引入迭代器概念.   一.迭代器(iterator)介绍 ...

  10. Hdu 4738 Caocao's Bridges (连通图+桥)

    题目链接: Hdu 4738 Caocao's Bridges 题目描述: 有n个岛屿,m个桥,问是否可以去掉一个花费最小的桥,使得岛屿边的不连通? 解题思路: 去掉一个边使得岛屿不连通,那么去掉的这 ...