java计算器程序

通过Swing模拟实现计算器


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyCalcultor implements ActionListener{

	 private JFrame  frame = new JFrame("MyCalculator");
	 private JPanel panel2 = new JPanel();
	 private final String []str = {"7", "8", "9", "/",  "4", "5", "6",
	            "*", "1", "2", "3", "-", "0", ".", "=", "+" };
	 JButton[]buttons = new JButton[str.length];
	 JButton reset = new JButton("CE");
	 JTextField display = new JTextField("0");
	 public void init(){
		 JPanel panel1 = new JPanel(new  BorderLayout());
		 panel1.add("Center",display);
		 panel1.add("East",reset);
		 
		 panel2.setLayout(new GridLayout(4,4,4,4));
		 for (int i = 0; i < str.length; i++) {
			 buttons[i] =  new JButton(str[i]);
			 panel2.add(buttons[i]);
			 buttons[i].setForeground(Color.blue);
		}
		 buttons[3].setForeground(Color.red);
		 buttons[7].setForeground(Color.red);
		 buttons[11].setForeground(Color.red);
		 buttons[15].setForeground(Color.red);
		 buttons[14].setForeground(Color.green);
		 frame.setLayout(new BorderLayout(4,2));
		 frame.add("North",panel1);
		 frame.add("Center",panel2);
		 
		 frame.addWindowListener(new WindowAdapter() {	
			 @Override
			public void windowClosing(WindowEvent e) {
				 System.exit(0);		 
			 }
		 });
		 for (int i = 0; i < str.length; i++) {
				buttons[i].addActionListener(this);
			}
			 reset.addActionListener(this);
			 display.addActionListener(this);
		 frame.setSize(800,800);
		 frame.pack();
		 frame.setVisible(true);
	 }
	 public void actionPerformed(ActionEvent e){
		 Object target = e.getSource();
		 String label = e.getActionCommand();
		 if(target == reset)
		 {
			 handleReset();
		 }else if ("0123456789.".indexOf(label)>0){
			 handleNumber(label);
		 }else{
			 handleOperator(label);
		 }
	 }
	 boolean isfirstdigit = true;
	 double num = 0.0;
	 String operator = "=";
	 public  void handleReset() {

		 display.setText("0");
		 isfirstdigit = true;
		 operator = "=";
	}
	 
	 public void handleNumber(String key){
		 if(isfirstdigit)
			 display.setText(key);
		 else if((key.equals(".")) && (display.getText().indexOf(".")<0))
			 display.setText(display.getText() + ".");
		 else if (!key.equals("."))
			 display.setText(display.getText() + key);
		 isfirstdigit = false;
	 }
	 public  void handleOperator(String key) {

		 if(operator.equals("+")){
			 num += Double.valueOf(display.getText());
		 }else if(operator.equals("-")){
			 num -=Double.valueOf(display.getText());
		 }
		 else if(operator.equals("*")){
			 num *=Double.valueOf(display.getText());
		 }
		 else if(operator.equals("/")){
			 num /=Double.valueOf(display.getText());
		 }
		 else if(operator.equals("=")){
			 num =Double.valueOf(display.getText());
		 }
		 display.setText(String.valueOf(num));
		 operator = key;
		 isfirstdigit = true;
		}
	 public static void main(String[] args) {
		 MyCalcultor test = new MyCalcultor();
		 test.init();
	}
}


  • 15
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值