Java制作计算机并实现基本运算

由于学习的深度还不够,所以现在只能实现一些简单的运算,只能实现两个数之间的运算,只支持鼠标点击,不支持输入指定数字或者字符

package 网格布局;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.lang.Math;

public class Demo extends JFrame implements ActionListener{

	private int size = 20;
	JPanel jp = null;
	JTextField jtf = null;
	JButton []jb = new JButton[size];
	
	JButton jb1 = null,jb2 = null,jb3 = null;
	JPanel jp1 = null;
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Demo d = new Demo();
	}

	public Demo()
	{
		jtf = new JTextField();
		
		jp = new JPanel();
		jb[4] = new JButton("7");
		jb[5] = new JButton("8");
		jb[6] = new JButton("9");
		jb[7] = new JButton("/");
		jb[8] = new JButton("4");
		jb[9] = new JButton("5");
		jb[10] = new JButton("6");
		jb[11] = new JButton("*");
		jb[12] = new JButton("1");
		jb[13] = new JButton("2");
		jb[14] = new JButton("3");
		jb[15] = new JButton("+");
		jb[16] = new JButton("0");
		jb[17] = new JButton(".");
		jb[18] = new JButton("=");
		jb[19] = new JButton("-");
		jb[0] = new JButton("CE");
		jb[1] = new JButton("√");
		jb[2] = new JButton("%");
		jb[3] = new JButton("^2");
		
		for(int i = 0;i < size;i ++){
			jp.add(jb[i]);
			jb[i].addActionListener(this);
		}
			
		jp.setLayout(new GridLayout(5,4,10,10));
		this.add(jp);
		
		this.add(jtf,BorderLayout.NORTH);
		
		this.setTitle("计算器");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//设置窗体居中显示
		this.setLocationRelativeTo(null);
		//禁止改变窗体大小
		this.setResizable(false);
		this.setSize(400,300);
		
		
		this.setVisible(true);
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource() == jb[0]){
			//清屏
			jtf.setText("");
		}
		else if(e.getSource() == jb[1]){
			
			String str = jtf.getText();

			double n = Double.parseDouble(str);
			double m = Math.sqrt(n);
			String ss = "√" + String.valueOf(n) + " = " + String.valueOf(m);
			jtf.setText(ss);
		}
		else if(e.getSource() == jb[2]){
			String str = jtf.getText();
			str += "%";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[3]){
			String str = jtf.getText();
			double n = Double.parseDouble(str);
			double m = n * n;
			String ss = String.valueOf(n) + " ^ 2 = " + String.valueOf(m);
			jtf.setText(ss);
		}
		else if(e.getSource() == jb[4]){
			String str = jtf.getText();
			str += "7";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[5]){
			String str = jtf.getText();
			str += "8";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[6]){
			String str = jtf.getText();
			str += "9";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[7]){
			String str = jtf.getText();
			str += "/";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[8]){
			String str = jtf.getText();
			str += "4";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[9]){
			String str = jtf.getText();
			str += "5";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[10]){
			String str = jtf.getText();
			str += "6";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[11]){
			String str = jtf.getText();
			str += "*";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[12]){
			String str = jtf.getText();
			str += "1";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[13]){
			String str = jtf.getText();
			str += "2";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[14]){
			String str = jtf.getText();
			str += "3";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[15]){
			String str = jtf.getText();
			str += "+";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[16]){
			String str = jtf.getText();
			str += "0";
			jtf.setText(str);
		}
		else if(e.getSource() == jb[17]){
			String str = jtf.getText();
			str += ".";
			jtf.setText(str);
		}
		/*
		 * 若为等的时候,计算式子的结果,运算结果为+ - * / %四种方法得到
		 */
		else if(e.getSource() == jb[18]){
			String str = jtf.getText();
			
			char[] ss = str.toCharArray();
			String s1 = "",s2 = "";
			char cc = 0;
			//获取运算符
			int i;
			for(i = 0;i < ss.length;i ++)
				if(ss[i] =='+'|| ss[i] == '-' || ss[i] == '*' || ss[i] == '/' || ss[i] == '%'){
					cc = ss[i];
					break;
				}
				else
					s1 += String.valueOf(ss[i]);

			for( ++ i;i < ss.length;i ++)
				s2 += String.valueOf(ss[i]);
			
			double[]a = new double[2];
			
			a[0] = Double.parseDouble(s1);
			
			a[1] = Double.parseDouble(s2);
			
			double m = 0.0;
			if(cc == '+')
				m = a[0] + a[1];
			else if(cc == '-')
				m = a[0] - a[1];
			else if(cc == '*')
				m = a[0] * a[1];
			else if(cc == '/' && a[1] != 0)
				m = a[0] / a[1];
			else if(cc == '%')
				m = a[0] % a[1];
			
			str += " = " + String.valueOf(m);
			jtf.setText(str);
		}
		else if(e.getSource() == jb[19]){
			String str = jtf.getText();
			str += "-";
			jtf.setText(str);
		}
	}

}


  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值