【实例简介】

【实例截图】

【核心代码】

import javax.swing.*;

import java.awt.*;

import java.util.HashMap;

import java.util.Stack;

/**

* Created by 28713 on 2016/9/11.

*/

public class Calculator extends JFrame{

private Stack operandStack= new Stack<>();

private Stack operatorStack = new Stack<>();

private Calculator(){

setTitle("计算器");

setSize(266,340);

Container c=getContentPane();

c.setLayout(null);

JTextArea jt=new JTextArea(100,100);

jt.setFont(new Font("Aria",Font.BOLD,32));

jt.setLineWrap(true);

JScrollPane sp=new JScrollPane(jt);

jt.setCaretPosition(jt.getDocument().getLength());

sp.setBounds(0,0,250,100);

c.add(sp);

JPanel p=new JPanel();

p.setLayout(new GridLayout(5,4,0,0));

p.setBounds(0,100,250,200);

String[] num={"(",")","AC","/","7","8","9","*","4","5","6","-","1","2","3"," ","0",".","DEL","="};

JButton[] jb=new JButton[20];

for(int i=0;i<20;i ){

jb[i]=new JButton(num[i]);

p.add(jb[i]);

}

c.add(p);

for(int i=0;i<18;i ){

if(i!=2){

final int j=i;

jb[i].addActionListener(e-> jt.append(num[j]));

}

}

jb[2].addActionListener(e->{

jt.setText("");

operandStack.clear();

operatorStack.clear();

});

jb[18].addActionListener(e->{

try{

jt.setText(jt.getText().substring(0,jt.getText().length()-1));

}catch(Exception ignored) { }//忽略这个异常 IDEA就是好用!!!

});

jb[19].addActionListener(e->{

try{

double x= calculate(jt.getText() "#");

jt.setText("");

jt.append(String.valueOf(x));

}catch(Exception ex){

if(ex.getMessage()==null)

jt.setText("ERROR!");

else

jt.setText(ex.getMessage());

}

});

//禁止文本域的enter换行

KeyStroke enter = KeyStroke.getKeyStroke("ENTER");

jt.getInputMap().put(enter, "none");

this.getRootPane().setDefaultButton(jb[19]);

//太累!不想研究了

//下面的,不知道主体是什么,当只有焦点在那个主体上才会响应,哎,不知道怎么弄。

/*c.addKeyListener(new KeyAdapter() {

@Override

public void keyPressed(KeyEvent e) {

if(e.getKeyCode()==KeyEvent.VK_ENTER){

System.out.println("adssdf");

double x= calculate(jt.getText() "#");

jt.setText("");

jt.append(String.valueOf(x));

}

}

});*/

//不知道为什么响应不了键盘事件???

//不知道为什么下面的的这个不行???

setVisible(true);

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

}

private void calculate(){

String b = operatorStack.pop();

double c = operandStack.pop();

double d = operandStack.pop();

double e;

if (b.equals(" ")) {

e = d c;

operandStack.push(e);

}

if (b.equals("-")) {

e = d - c;

operandStack.push(e);

}

if (b.equals("*")) {

e = d * c;

operandStack.push(e);

}

if (b.equals("/")) {

if(c==0)

throw new ArithmeticException("DivideByZero!");//不可修改为Exception

// Exception的异常是必须处理的,是受控异常;而ArithmeticException 不是必须处理的 ,受控异常必须强制处理

e = d / c;

operandStack.push(e);

}

}

private Double calculate(String text){

HashMap precede=new HashMap<>();

precede.put("(",0);

precede.put(")",0);

precede.put("/",2);

precede.put("*",2);

precede.put("-",1);

precede.put(" ",1);

precede.put("#",0);

operatorStack.push("#");

int flag=0;

for(int i=0;i

String a=String.valueOf(text.charAt(i));

if(!a.matches("[0-9.]")){

if(flag!=i)

operandStack.push(Double.parseDouble(text.substring(flag,i)));

flag=i 1;

while(!(a.equals("#")&&operatorStack.peek().equals("#"))){

if(precede.get(a)>precede.get(operatorStack.peek())||a.equals("(")){

operatorStack.push(a);

break;

}else {

if(a.equals(")")) {

while(!operatorStack.peek().equals("("))

calculate();

operatorStack.pop();

break;

}

calculate();

}

}

}

}

return(operandStack.pop());

}

public static void main(String[] args){

new Calculator();

}

}

java计算器代码_java计算器源代码(新手入门级)相关推荐

  1. java 围棋代码_java围棋源代码

    基于 WWW 的围棋棋谱演示软件的设计 丁振凡 [期刊名称]<微型机与应用> [年(卷),期]2000(019)008 [摘要]介绍采用 Java 结合 ASP 编程实现的围棋棋谱.... ...

  2. java计算器注释_java计算器实现,百行代码,清晰注释

    写安卓写了三年有余了吧!今天无聊,在网上看看安卓的计算器居然没有一个实现的好的,真实让人心寒啊! 闲着无聊,我也写了一个java实现计算器,代码简单易懂,稍微有那么点不好懂的我都写了详细的注释的! 那 ...

  3. java 定时器代码_Java定时器代码的编写

    Java定时器代码的编写 在某些时候, 我们需要实现这样的`功能,某一程序隔一段时间执行一次,而这一事情由系统本身来完成,并不是人为的触发,我们一般可称此为定时器任务.其实到Java中,实现起来是非常 ...

  4. java 编写代码_Java 7:如何编写非常快速的Java代码

    java 编写代码 当我第一次写此博客时,我的目的是向您介绍ThreadLocalRandom类,它是Java 7中新增的用于生成随机数的类. 我在一系列微基准测试中分析了ThreadLocalRan ...

  5. java游戏代码_Java与Kotlin系列文章之性能问题详解

    作者丨Jakub Anioła 译者丨姜雨生 策划丨田晓旭 随着对 Kotlin 越来越深入的了解,我发现市面上关于 Kotlin 方面,比较深入的资料几乎是 0,所以我决定,将 Kotlin 各个方 ...

  6. java四则运算代码_Java实现简单四则运算

    GitHub 项目地址 PSP PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 10 · Estima ...

  7. java 文件下载代码_java文件下载代码实例(单文件下载和多文件打包下载)

    这篇文章主要介绍了java文件下载代码实例(单文件下载和多文件打包下载),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近项目有需要写文件下载相关 ...

  8. java全面的计算器代码_Java实现计算器的代码

    用java 实现的计算器,原理看代码注释,具体内容如下 public class mycalculator { public static void main(string[] args) { str ...

  9. java编译类代码_Java的源代码中定义几个类,编译结果就生成几个以“.class”后缀的字节码。...

    [填空题]一个类实现某个接口时必须实现接口中声明的所有方法,否则该类必须定义为(__); [单选题]若有定义int a = 2;则执行完语句a += a -= a * a; 后,a的值是( ) [填空 ...

  10. java计算器输入框_java 计算器

    package calculator; //包名,根据自己创建的项目而定 importjava.awt.Color;importjava.awt.Font;importjava.awt.event.A ...

最新文章

  1. linux用户空间 限制吗,在Linux中限制用户空间
  2. python3.5.2-python升级 (2.6升级到3.5)
  3. python毕业设计开题报告-基于Python图书管理系统开题报告
  4. NS安装问题收集(2)
  5. Jenkins CLI命令行工具,助你轻松管理 Jenkins
  6. 6.openldap客户端安装
  7. Windows API 进程状态信息函数
  8. Oracle join多表查询
  9. javascript练习案例--消失的星星
  10. 智能合约语言 Solidity 教程系列3 - 函数类型
  11. 简单html和css静态网页制作
  12. [决策单调 分治] LOJ#535. 「LibreOJ Round #6」花火
  13. 如何将pdf压缩到最小?怎么将pdf文档压缩至更小?
  14. 小程序授权登录注册自有账户体系
  15. android 实现进度条的画面加载
  16. day3-作业(18-23)(java泛型总结一)
  17. prop()方法的应用
  18. 背包问题贪心算法求解
  19. python简单应用!用爬虫来采集天猫所有优惠券信息,写入本地文件
  20. 51单片机实现用一个定时器输出可调PWM

热门文章

  1. Tomcat 修改端口
  2. centos7安装redies
  3. 福特dms系统服务器,dms系统云服务器
  4. linux xbrowser 安装包,xmanager安装包
  5. 对不起,我不是你爸爸
  6. 【原创】AE套用模板教程
  7. Docker视频教程 之 熟悉docker-machine及docker常用命令 - 知识林
  8. centeros 下载及安装
  9. autocad字体ccfang,求CAD字体hzmsdi.shx 发到我邮箱,185955330@qq.com
  10. python第三方库官方文档汇总