请点击好的,看完介绍,咱们就根据这个杭电oj上1237 这道题,改写一个用GUI写出来的 小计算器,类似于这样:

然后 通过输入 显示结果,比如说:

可以看得出来,咱们得到的结果是正确的:

代码:

package Computer;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Stack;import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;public class Count extends JApplet implements ActionListener
{/*** */private static final long serialVersionUID = 1L;private JTextField textField = new JTextField("请输入");String operator = "";//操作String input = "";//输入的 式子boolean flag =  true;
//  boolean flag1 = true;
//  boolean flag2 = true;public void init()//覆写Applet里边的init方法{Container C = getContentPane();JButton b[] = new JButton[16];JPanel panel = new JPanel();C.add(textField, BorderLayout.NORTH);C.add(panel,BorderLayout.CENTER);panel.setLayout(new GridLayout(4, 4,5,5));String name[]={"7","8","9","+","4","5","6","-","1","2","3","*","0","C","=","/"};//设置 按钮for(int i=0;i<16;i++)//添加按钮{b[i] = new JButton(name[i]);b[i].setBackground(new Color(192,192,192));b[i].setForeground(Color.BLUE);//数字键 设置为 蓝颜色if(i%4==3)b[i].setForeground(Color.RED);b[i].setFont(new Font("宋体",Font.PLAIN,16));//设置字体格式panel.add(b[i]);b[i].addActionListener(this);}b[13].setForeground(Color.RED);//非数字键,即运算键设置为红颜色b[13].setForeground(Color.RED);}public void actionPerformed(ActionEvent e) {int cnt = 0;String actionCommand = e.getActionCommand();if(actionCommand.equals("+")||actionCommand.equals("-")||actionCommand.equals("*") ||actionCommand.equals("/"))input +=" "+actionCommand+" ";//设置输入,把输入的样式改成 需要的样子else if(actionCommand.equals("C"))input = "";else if(actionCommand.equals("="))//当监听到等号时,则处理 input{input+= "="+compute(input);textField.setText(input);input="";cnt = 1;}elseinput += actionCommand;//数字为了避免多位数的输入 不需要加空格if(cnt==0)textField.setText(input);}private String compute(String input)//即1237 的 样例{String str[];str = input.split(" ");Stack<Double> s = new Stack<Double>();double m = Double.parseDouble(str[0]);s.push(m);for(int i=1;i<str.length;i++){if(i%2==1)  {  if(str[i].compareTo("+")==0)  {  double help = Double.parseDouble(str[i+1]);  s.push(help);  }  if(str[i].compareTo("-")==0)  {  double help = Double.parseDouble(str[i+1]);  s.push(-help);  }  if(str[i].compareTo("*")==0)  {  double help = Double.parseDouble(str[i+1]);  double ans = s.peek();//取出栈顶元素  s.pop();//消栈  ans*=help;  s.push(ans);  }  if(str[i].compareTo("/")==0)  {  double help = Double.parseDouble(str[i+1]);  double ans = s.peek();  s.pop();  ans/=help;  s.push(ans);  }  }  }  double ans = 0d;  while(!s.isEmpty())  {  ans+=s.peek();  s.pop();  }  String result = String.valueOf(ans);return result;}public static void main(String args[]){JFrame frame = new JFrame("Count");Count applet = new Count();frame.getContentPane().add(applet, BorderLayout.CENTER);applet.init();//applet的init方法applet.start();//线程开始frame.setSize(350, 400);//设置窗口大小frame.setVisible(true);//设置窗口可见}}

java 写一个简单的计算器相关推荐

  1. python123程序设计题说句心里话_用c++写一个简单的计算器程序

    // 050305.cpp : 定义控制台应用程序的入口点. // // 050304.cpp : 定义控制台应用程序的入口点. // //四则运算 #include "stdafx.h&q ...

  2. 用java写一个简单的区块链(下)

    用java写一个简单的区块链(下) 2018年03月29日 21:44:35 java派大星 阅读数:725 标签: 区块链java 更多 个人分类: 区块链 版权声明:本文为博主原创文章,转载请标明 ...

  3. 怎样用java写一个简单的文件复制程序

    怎样用java写一个简单的文件复制程序 代码来源:https://jingyan.baidu.com/article/c35dbcb0d6f1398916fcbc07.html package Num ...

  4. 用java写一个日历_使用JAVA写一个简单的日历

    JAVA写一个简单的日历 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDa ...

  5. Java实现一个简单的计算器,实现计算器中加、减、乘、除的运算方法

    java实现一个简单的计算器 import java.util.Scanner; public class Calculation{public static void main(String[] a ...

  6. java编写日历思路_使用JAVA写一个简单的日历

    JAVA写一个简单的日历import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDat ...

  7. 使用JAVA写一个简单的日历

    JAVA写一个简单的日历 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDa ...

  8. 用Java写一个简单的回合制游戏

    用Java写一个简单的回合制游戏 创建基本属性,血量,名字,技能,技能伤害. 如下: public class One3 {//创建三个属性private String name;private St ...

  9. java递归怎么写_什么是递归?用Java写一个简单的递归程序

    什么是递归?用Java写一个简单的递归程序 递归的定义 递归(recursion):以此类推是递归的基本思想,将规模大的问题转化为规模小的问题来解决. 递归的要素 自定义递归函数,并确定函数的基本功能 ...

最新文章

  1. 克服汽车摄像头连接挑战
  2. .net面试题大全,绝大部分面试题
  3. 随便聊聊,Linux 中的环境变量
  4. springboot redis 断线重连_Redis(9)——史上最强【集群】入门实践教程
  5. BugkuCTF-Reverse题Timer(阿里CTF)
  6. 【宇宙探秘】物理角度分析,蚂蚁从万米高空掉下会摔死吗?
  7. Python风格总结:if语句
  8. PHP内核之旅-3.变量
  9. 解读2015之大数据篇:大数据的黄金时代
  10. 戴尔笔记本不能识别U盘和鼠标解决方法
  11. k380没有验证码_罗技K380蓝牙键盘
  12. html 分页table,利用JS实现HTML TABLE的分页
  13. 使用QT遍历Json文档及搜索子对象
  14. cmake gcc target specific option mismatch
  15. tex 表格内容换行_如何让latex表格中一个单元格的文字换行
  16. Windows 8如何关闭自动维护_-Chaz-_新浪博客
  17. Jackson –将JSON数组字符串转换为List
  18. C#使用System.Speech制作语音提示功能。
  19. 遥感影像数据产品级别
  20. 打开本地html加载网页慢,网页打开慢怎么办 影响网页打开速度因素有哪些【解决方法】...

热门文章

  1. Pytorch:内部结构
  2. putty的窗口关闭相关的可能需要注意的细节
  3. 构建与定制:唯品会PaaS基于Kubernetes的实践
  4. Python实例:通过字典某个关键字排序
  5. 多线程 并发编程(一)
  6. Windows 2000服务器安全配置精华技巧
  7. 用C读取INI配置文件 (可在linux平台上用)
  8. 提示cannot instantiate abstract class due to following members?
  9. VS.左侧_蓝黄绿_竖线
  10. Python 资源库大全