分享一个java写的简单计算器
2012-04-26 17:11
260 查看
一个简单的计算器,只实现了加、减、乘、除等简单功能,界面如下所示
原代码如下:
原代码如下:
package UI; //计算器 import java.awt.BorderLayout; import java.awt.GridLayout; import javax.swing.*; import java.awt.event.*; import javax.swing.JTextField; public class Calculator1 implements ActionListener{ private JButton jb=new JButton();//按钮 private JTextField jtf=new JTextField();//窗体 private String oldString="0";//记录老数据 private String newString="0";//记录新数据 private String operater="";//记录运算符 private int count1=0;//等号的数量 private int count2=0;//运算符的数量 private boolean append=true;//在操作数据时用于判断追加或替换 private boolean m=true; private boolean n=true; public Calculator1(){ JFrame jf=new JFrame("计算器"); jf.setResizable(false); BorderLayout border=new BorderLayout(); jtf.setEditable(false); jf.add(jtf,BorderLayout.NORTH); JPanel jp=new JPanel(); GridLayout gl=new GridLayout(5,4); jp.setLayout(gl); String[] str={"Backs","CE","C","+","7","8","9","-","4","5","6","*","1","2","3","/","0",".","+/-","="}; for(int i=0;i<str.length;i++){//布局按钮 jb=new JButton(str[i]); jb.addActionListener(this);//给每个按钮注册监听 jp.add(jb); } jf.add(jp); jf.pack();//自动调整窗口大小 jf.setLocation(300, 200);//显示位置 jf.setVisible(true);//可以显示 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭后停止工作 } public void actionPerformed(ActionEvent e) { String com=e.getActionCommand(); if(com.matches("^\\d$")){ if(append&&m){ String text=jtf.getText(); jtf.setText(text+com); }else if(!append&&m){ jtf.setText(com); append=true; } }else if("+-*/".indexOf(com)!=-1){ count2++; append=false; if(count1==0&&count2>1){ newString=jtf.getText(); double d1=Double.parseDouble(oldString); double d2=Double.parseDouble(newString); double d=0; if(operater.matches("\\+")){ d=d1+d2; }else if(operater.matches("\\-")){ d=d1-d2; }else if(operater.matches("\\*")){ d=d1*d2; }else{ if(d2==0){ jtf.setText("除数不能为零"); m=false; }else{ d=d1/d2; } } if(m){ jtf.setText(d+""); } append=false; } count1=0; oldString=jtf.getText(); operater=com; }else if(com.matches("^=$")){ count1++; count2=0; newString=jtf.getText(); double d1=Double.parseDouble(oldString); double d2=Double.parseDouble(newString); double d=0; if(operater.matches("\\+")){ d=d1+d2; }else if(operater.matches("\\-")){ d=d1-d2; }else if(operater.matches("\\*")){ d=d1*d2; }else{ if(d2==0){ jtf.setText("除数不能为零"); m=false; }else{ d=d1/d2; } } if(m){ jtf.setText(d+""); } append=false; }else if(".".equals(com)){ String temp=jtf.getText(); if(temp.indexOf(".")==-1){ jtf.setText(temp+"."); append=true; } }else if("+/-".equals(com)){ String temp=jtf.getText(); if(temp.startsWith("-")){ jtf.setText(temp.substring(1)); }else{ jtf.setText("-"+temp); } }else if("C".equals(com)){ jtf.setText("0"); newString="0"; oldString="0"; count1=0; count2=0; append=false; m=true; }else if("CE".equals(com)){ newString="0"; jtf.setText(oldString); append=false; m=true; }else if("Backs".equals(com)){ String temp=jtf.getText(); char[] c=temp.toCharArray(); jtf.setText(temp.substring(0,c.length-1)); } } public static void main(String[] args) { Calculator1 c=new Calculator1(); } }
相关文章推荐
- 用java写一个用户登陆界面的代码分享
- 【分享】一个语音Java SDK使用的常见问题解答
- 一个JAVA程序员成长之路分享
- java程序员菜鸟进阶(八)分享一个爬取B2B网站信息的程序
- 用java编写一个简单计算器
- 分享一个Java生成二维码工具类
- 一个JAVA程序员成长之路分享
- 分享一个学习javaweb服务器的网站 ssm框架
- 分享一个牛人给java初学者的建议(图文完整版)
- 分享一个在osc上看到的java版的截图软件
- 分享一个猜数字游戏的JAVA代码
- 一个JAVA程序员成长之路分享
- Java中使用正则表达式的一个简单例子及常用正则分享
- 分享一个java正则验证类
- 分享:写了一个 java 调用 C语言 开发的动态库的范例
- 一个JAVA程序员成长之路分享
- 一个JAVA程序员成长之路分享
- 一个JAVA程序员成长之路分享
- 一个JAVA程序员成长之路分享
- 分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写