您的位置:首页 > 编程语言 > Java开发

分享一个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();
		}
	}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: