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. A program to print Fahrenheit-Celsius table with floating-point values

    我的主力博客:半亩方塘 Another program to print Fahrenheit-Celsius table with decimal integer This program is p ...

  2. onload onmouseover 事件监听

    <div class="nav"> <ul> <li>翠翠</li> <li>嗯嗯</li> <li& ...

  3. ip(点分十进制 <==> 二进制整数)之间的转换

    linux的套接字部分比较容易混乱,在这里稍微总结一下. 地址转换函数在地址的文本表达式和它们存放在套接字地址结构中的二进制值进行转换. 地址转换函数有四个:其中inet_addr 和 inet_nt ...

  4. SpringMVC_RESTRUL_CRUD

    编写POJO Departmet: package org.springmvc.curd.entity; public class Department { private int id; priva ...

  5. kentico7中设置site的default page

    在SiteManager中,Settings中,选择好站点,然后Content,Default alias path

  6. Python中关键字global与nonlocal的区别

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xCyansun/article/details/79672634终于下定决心学习Python了.既然 ...

  7. Linux 进程间通讯方式 pipe()函数 (转载)

    转自:http://blog.csdn.net/ta893115871/article/details/7478779 Linux 进程间通讯方式有以下几种: 1->管道(pipe)和有名管道( ...

  8. contesthunter 6201 走廊泼水节【克鲁斯卡尔+并查集】

    很有意思的题,所以还是截lyddalao的课件 #include<iostream> #include<cstdio> #include<algorithm> us ...

  9. P2622 关灯问题II(状压bfs)

    P2622 关灯问题II 题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯——按下了第i个按钮,对于所有的灯都有一个效果.按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j] ...

  10. 使用Gitalk实现静态页面评论的功能

    使用静态页面的理由 本人在Github上使用github.io部署了一个静态主页,地址是http://aopstudio.github.io,用于存放一些笔记文件.虽然静态页面功能少,自动化程度低,不 ...