JAVA-计算器
2016-02-25 21:20
435 查看
package yz; //引入类 import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.math.BigDecimal; public class Yz extends JFrame implements ActionListener { JPanel jsq; JTextField txt; JButton[] Nums; int f= 0; Double g=0.0,h=0.0,j=0.0; String fh=""; public static void main(String[] args) { Yz y=new Yz(); } public Yz(){ jsq=new JPanel(); jsq.setLayout(new GridLayout( 5, 4, 4, 4)); Nums=new JButton[ 20]; String []a={"←","CE","C","%", "7","8","9","/", "4","5","6","*", "1","2","3","-", ".","0","=","+"}; for(int i= 0;i<Nums.length;i++){ Nums[i]=new JButton(a[i]); jsq.add(Nums[i]); Nums[i].addActionListener(this);//注册监听 } txt=new JTextField( 10); txt.setText(""); txt.setEditable(false); txt.setRequestFocusEnabled(false); txt.setHorizontalAlignment(JTextField.RIGHT); this.add(txt,BorderLayout.NORTH); this.add(jsq); this.setVisible(true); //显示窗体 this.setSize(300,300); //窗体大小 this.setLocation(550,300); //出现位置 this.setTitle("计算器"); //窗体标题 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭进程 } //监听 public void actionPerformed(ActionEvent e){ String a=e.getActionCommand(); int b="0123456789".indexOf(a); int c="+-*/%".indexOf(a); if(b!=- 1){//如果按下的是数字 if(f== 0){ txt.setText(a); f= 1; } else { String d = txt.getText(); txt.setText(d+a); } } else if(c!=- 1)//如果按下的是运算符 { if(c== 1&&f== 0){ g=0.0; txt.setText(a); f= 1; } else if(txt.getText().equals("")){ JOptionPane.showMessageDialog(null, "错误", "不能为零请重新输入", JOptionPane.ERROR_MESSAGE); } else { g=Double.valueOf(txt.getText()); fh=a; txt.setText(""); f= 0; } } else if("="==a){//如果按下的是等号 if(txt.getText().equals("")){ h=0.0; } else h=Double.valueOf(txt.getText()); if(fh=="+"){//如果按下的是加号 String d1 = String.valueOf(g+h).substring( 0, String.valueOf(g+h).length()); double i; i=Double.valueOf(d1); int r=(int)i; if(r==Double.valueOf(d1)){ d1=d1.substring( 0, d1.length()- 2); txt.setText(d1); } else txt.setText(d1); } if(fh=="-"){//如果按下的是减号 String d2 = String.valueOf(g-h).substring( 0, String.valueOf(g-h).length()); double i; i=Double.valueOf(d2); if(i>= 0) { float r=(float)i; if(r==Double.valueOf(d2)){ d2=d2.substring( 0, d2.length()- 2); txt.setText(d2); } else{ txt.setText(d2); } } else{ txt.setText(new BigDecimal(String.valueOf(g-h).substring( 0, String.valueOf(g-h).length())).stripTrailingZeros().toString()); } } if(fh=="*"){//如果按下的是乘号 String d3 = String.valueOf(g*h).substring( 0, String.valueOf(g*h).length()); double i; i=Double.valueOf(d3); int r=(int)i; if(r==i){ d3=d3.substring( 0, d3.length()- 2); txt.setText(d3); } else{ txt.setText(d3); } } if(fh=="/"){//如果按下的是除号 if(h==0.0){ JOptionPane.showMessageDialog(null, "错误", "除数不能为零请重新输入", JOptionPane.ERROR_MESSAGE); txt.setText(""); } else{ String d4 = String.valueOf(g/h).substring( 0, String.valueOf(g/h).length()); double i; i=Double.valueOf(d4); int r=(int)i; if(r==Double.valueOf(d4)){ d4=d4.substring( 0, d4.length()- 2); txt.setText(d4); } else{ txt.setText(d4); } } } if(fh=="%"){ String n = txt.getText(); txt.setText(String.valueOf(g/100)); } } else if("CE"==a){ h=0.0; txt.setText(""); } else if("C"==a){ g=0.0; h=0.0; f= 0; txt.setText(""); } else if("."==a){ String n = txt.getText(); if(txt.getText().trim().indexOf(".")!=- 1) ; else txt.setText(n+"."); } else if("←"==a){ String xs=txt.getText(); if(xs.length()>= 1) xs=xs.substring( 0, xs.length()- 1); txt.setText(xs); } } }
相关文章推荐
- 【6-6】HBASE的Java接口(2)
- java map的四种遍历
- java知识结构树
- Java中播放声音实例
- Java中的泛型方法
- Java 中基本类型和字符串之间的转换
- Java 递归与非递归实现快速排序
- Mac OSX之java环境的搭建
- myeclipse中的classpath
- Rar Java Zip
- JAVA_多态性演示a____自动向上转型、向下转型、检查对象是否为某个类型(instanceof)
- JAVA_多态性演示a____自动向上转型、向下转型、检查对象是否为某个类型(instanceof)
- springmvc 传入controller乱码
- java线程(1)--概念基础
- Java并发-类库新组件 - CyclicBarrier 理解
- spring学习小结3——bean之间的继承,依赖关系
- Java中的NIO
- java操作xml的一个小例子
- Myeclipse如何自动创建hibernate 转载
- java中Collection/Collections;List/Set/Map;ArrayList/Vector/LinkedList;HashSet/HashMap/TreeSet/TreeMap