用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

计算器

2017-06-19 作者:夜雨声烦举报

[java]代码库

111111111111111111111111111111111111111111111111111111111111111111111
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.rmi.server.Operation;
import java.text.NumberFormat;
import java.util.LinkedList;

import javax.naming.LinkLoopException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
import javax.swing.border.SoftBevelBorder;

public class ComputerPad extends Frame implements ActionListener{
	NumberButton numberButton[];                     //数字按钮数组
	OperationButton operationButton[];               //运算符号按钮数组
	JTextField resultShow;
	//小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮
	JButton btn_point,btn_symbol,btn_quit,btn_lastCount,btn_equal,btn_clear;  //按钮
	LinkedList linkedList =new LinkedList();//负责存储数据的对象
	String operation[]={"+","-","*","/"};//运算发号数组
	boolean flag=false;                  //是否按下等号
public void f(){
	JFrame frame=new JFrame("计算器");
	frame.setBounds(200,100,320,250);
	JPanel panel=new JPanel();
	JPanel panel1=new JPanel();
	numberButton=new NumberButton[10];//共有十个数字按钮
	for (int i = 0; i < 10 ;i++) {
		numberButton[i]=new NumberButton(i);
		numberButton[i].addActionListener(this);
	}
	operationButton =new OperationButton[4];
	for (int i = 0; i <4; i++) {
		operationButton[i]=new OperationButton(operation[i]);
		operationButton[i].addActionListener( this);
	}
	btn_point=new JButton(".");//小数点
	btn_symbol=new JButton("+/-");//正负号
	btn_equal=new JButton("=");//等号
	btn_quit=new JButton("退格");//退格
	btn_lastCount=new JButton("1/x");//倒数
	btn_clear=new JButton("c");//清空

	btn_clear.setForeground(Color.red);
	btn_quit.setForeground(Color.red);
	btn_equal.setForeground(Color.red);
	btn_lastCount.setForeground(Color.blue);
	btn_symbol.setForeground(Color.blue);
	btn_point.setForeground(Color.blue);	
	
	btn_clear.addActionListener(this);
	btn_equal.addActionListener(this);
	btn_lastCount.addActionListener(this);
	btn_point.addActionListener(this);
	btn_quit.addActionListener(this);
	btn_symbol.addActionListener(this);
	
	resultShow=new JTextField(20);
	resultShow.setHorizontalAlignment(JTextField.RIGHT);
	resultShow.setForeground(Color.blue);
	resultShow.setFont(new Font("TimesRoman",Font.PLAIN,14));
	resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
	resultShow.setBackground(Color.white);
	resultShow.setEditable(false);
	
	panel1.add(resultShow);
	panel.setLayout(new GridLayout(4,5));//面板中的第一行
	panel.add(numberButton[1]);
	panel.add(numberButton[2]);
	panel.add(numberButton[3]);
	panel.add(operationButton[0]);
	panel.add(btn_clear);
	//面板第二行
	panel.add(numberButton[4]);
	panel.add(numberButton[5]);
	panel.add(numberButton[6]);
	panel.add(operationButton[1]);
	panel.add(btn_quit);
	//面板中的第三行
	panel.add(numberButton[7]);
	panel.add(numberButton[8]);
	panel.add(numberButton[9]);
	panel.add(operationButton[2]);
	panel.add(btn_lastCount);
	//面板中的第四行
	panel.add(numberButton[0]);
	panel.add(btn_symbol);
	panel.add(btn_point);
	panel.add(operationButton[3]);
	panel.add(btn_equal);
	
	frame.add(panel1, BorderLayout.NORTH);
	frame.add(panel,BorderLayout.CENTER);
	
	addWindowListener(new WindowAdapter() {
		@Override
		public void windowClosing(WindowEvent e) {
			System.exit(0);
		}
	});
	frame.setVisible(true);
	setResizable(false);
	validate();
}
@Override
public void actionPerformed(ActionEvent e) {
	// TODO Auto-generated method stub
	if(e.getSource() instanceof NumberButton)//如果数遍单击数字按钮
	{
		NumberButton b=(NumberButton) e.getSource();
		if (linkedList.size()==0) {//如果链表中没有节点
			 int number=b.getNumber();//获取按钮上的数字
			 linkedList.add(""+number);//将数据添加到链表
			 resultShow.setText(""+number);//将两个数字收尾相接
			 flag=false;
		}
		else if(linkedList.size()==1&&flag==false){
			int number=b.getNumber();
			String num=(String) linkedList.getFirst();
			String s=num.concat(""+number);
			linkedList.set(0, s);
			resultShow.setText(s);
		}
		else if(linkedList.size()==1&&flag==true){
			int number=b.getNumber();
			linkedList.removeFirst();
			linkedList.add(""+number);      //将数据添加到链表
			flag=false;
			resultShow.setText(""+number);
		}
		else if(linkedList.size()==2){//链表中已有2个节点
			int number=b.getNumber();//获取按钮上数字
			linkedList.add(""+number);//链表添加第三个节点,注意:第二个节点是运算符号。
			resultShow.setText(""+number);
		}
		else if(linkedList.size()==3){//链表中已有3个节点
			int number=b.getNumber();
			String num=(String) linkedList.getLast();
			String s=num.concat(""+number);//与链表第3个节点中的数字收尾相接
			linkedList.set(2, s);
			resultShow.setText(s);
		}
	}
	
		else if(e.getSource() instanceof OperationButton){//如果单击运算符号按钮
			OperationButton b=(OperationButton) e.getSource();
			if(linkedList.size()==1){
				String fuhao=b.getOperator();
				linkedList.add(fuhao);
			}
			else if(linkedList.size()==2){
				String fuhao=b.getOperator();
				linkedList.set(1, fuhao);
			}
			else if(linkedList.size()==3){
				String fuhao=b.getOperator();
				String number1=(String) linkedList.getFirst();
				String number2=(String) linkedList.getLast();
				String yunsuanfuhao=(String) linkedList.get(1);
				try {
				double n1=Double.parseDouble(number1);
				double n2=Double.parseDouble(number2);
				double n=0;
				if(yunsuanfuhao.equals("+")){
					n=n1+n2;
				}
				else if(yunsuanfuhao.equals("-")){
					n=n1-n2;
				}
				else if(yunsuanfuhao.equals("*")){
					n=n1*n2;
				}
				else if(yunsuanfuhao.equals("/")){
					n=n1/n2;
				}
				linkedList.clear();//根据链表内已有的数进行运算,其结果作为新的运算数值
				linkedList.add(""+n);
				linkedList.add(fuhao);
				resultShow.setText(""+n);
				} catch (Exception e2) {
					// TODO: handle exception
				}
			}
		}
//(1)	
		else if(e.getSource()==btn_equal){
			flag=true;
			if(linkedList.size()==1||linkedList.size()==2){
				String num=(String) linkedList.getFirst();
				resultShow.setText(""+num);
			}
			else if(linkedList.size()==3){
				String number1=(String) linkedList.getFirst();
				String number2=(String) linkedList.getLast();
				String yunsuanfuhao=(String) linkedList.get(1);
				try {
					double n1=Double.parseDouble(number1);
					double n2=Double.parseDouble(number2);
					double n=0;
					if(yunsuanfuhao.equals("+")){
						n=n1+n2;
					}
					else if(yunsuanfuhao.equals("-")){
						n=n1-n2;
					}
					else if(yunsuanfuhao.equals("*")){
						n=n1*n2;
					}
					else if(yunsuanfuhao.equals("/")){
						n=n1/n2;
					}
					resultShow.setText(""+n);
					linkedList.set(0,""+n);
					linkedList.removeLast();//将链表中的第二个运算数删除
					linkedList.removeLast();//再将运算符号删除
				} catch (Exception e2) {
					// TODO: handle exception
				}
			}
		}
//(2)
		else if(e.getSource()==btn_point){
			if(linkedList.size()==0){
				flag=false;
			}
			else if(linkedList.size()==1) {
				String dot=btn_point.getLabel();//获取按钮上的小数点
				String num=(String) linkedList.getFirst();
				String s=null;
				if(num.indexOf(dot)==-1){//嫁娶数字中不含小数点
					s=num.concat(dot);
					linkedList.set(0, s);
				}
				else{
					s=num;
				}
				linkedList.set(0, s);
				resultShow.setText(s);
			}
			else if(linkedList.size()==3){
				String dot=btn_point.getLabel();//获取按钮上的小数点
				String num=(String) linkedList.getLast();
				String s=null;
				if(num.indexOf(dot)==-1){
					s=num.concat(dot);
					linkedList.set(2, s);
				}
				else{
					s=num;
				}
				resultShow.setText(s);
			}
		}
//(3)	
		else if(e.getSource()==btn_quit){
			if(linkedList.size()==1){
				String num=(String) linkedList.getFirst();
				if(num.length()>=1){
					num=num.substring(0,num.length()-1);
					linkedList.set(0, num);
					resultShow.setText(num);
				}else{
					linkedList.removeLast();
					resultShow.setText("0");
				}
			}
			else if(linkedList.size()==3){
				String num=(String) linkedList.getLast();
				if(num.length()>=1){
					num=num.substring(0, num.length()-1);
					linkedList.set(2, num);
				}
				else{
					linkedList.removeLast();
					resultShow.setText("0");
				}
			}
		}
//(4)	
		else if(e.getSource()==btn_symbol){
			if(linkedList.size()==1){
				String number1=(String) linkedList.getFirst();
				try {
					double d=Double.parseDouble(number1);
					d=-1*d;
					String str=String.valueOf(d);
					linkedList.set(0, str);
					resultShow.setText(str);
				} catch (Exception e2) {
					// TODO: handle exception
				}
			}
			else if(linkedList.size()==3){
				String number2=(String) linkedList.getLast();
				try {
					double d=(Double) linkedList.getLast();
					d=-1*d;
					String str=String.valueOf(d);
					linkedList.set(2, str);
					resultShow.setText(str);
				} catch (Exception e2) {
					// TODO: handle exception
				}
			}
		}
//(5)
		else if(e.getSource()==btn_lastCount){
			if(linkedList.size()==1||linkedList.size()==2){
				String number1=(String) linkedList.getFirst();
				try {
					double d=Double.parseDouble(number1);
					d=1.0/d;
					String str=String.valueOf(d);
					linkedList.set(0, str);
					resultShow.setText(str);
				} catch (Exception e2) {
					// TODO: handle exception
				}
			}
			else if(linkedList.size()==3){
				String number2=(String) linkedList.getLast();
				try {
					double d=Double.parseDouble(number2);
					d=1.0/d;
					String str=String.valueOf(d);
					linkedList.set(0, str);
				} catch (Exception e2) {
					// TODO: handle exception
				}
			}
		}
//(6)	
		else if(e.getSource()==btn_clear){
			flag=false;
			resultShow.setText("0");
			linkedList.clear();
		}
}
public static void main(String[] args) {
	ComputerPad c=new ComputerPad();
	c.f();

	
}
	}
2222222222222222222222222222222222222222222222222222222
import java.awt.Button;
import java.awt.Color;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
public class NumberButton extends Button{
	int number;
	public NumberButton(int number) {
		super(" "+number);// public Button(String label) throws HeadlessException { GraphicsEnvironment.checkHeadless();this.label = label; }  构造一个带指定标签的按钮。
		this.number=number;
		setForeground(Color.blue);
	}
	public int getNumber() {
		return number;
	}
}
3333333333333333333333333333333333333333333333333333333333333
import java.awt.Button;
import java.awt.Color;

public class OperationButton extends Button{
		String operator;
		public OperationButton(String s){
			super(s);
			operator=s;
			setForeground(Color.red);
		}
	public String getOperator(){
		return operator;
	}
}


分享到:
更多

网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。