一个简易的计算器

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;


public class Testcacluate  extends JFrame{
	JTextArea fi=new JTextArea(1,20);
	LinkedList<String> yunsuanfu=new LinkedList<>();
	LinkedList<Integer> numbers=new LinkedList<>();
	int outcome;
	public Testcacluate() throws HeadlessException {
		setTitle("简易计算器");
		Container con=getContentPane();
		setBounds(200, 200, 300, 400);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		con.setLayout(null);
		//创建显示区域
		fi.setBorder(BorderFactory.createLineBorder(Color.black, 3, true));
		fi.setFont(new Font("楷体",Font.BOLD,20));
		JPanel jp=new JPanel();
		jp.setLayout(new FlowLayout());
		jp.add(fi);
		jp.setBorder(BorderFactory.createTitledBorder("显示区"));
		con.add(jp);
		jp.setBounds(0, 0, 280, 60);
		//创建键盘区
		JPanel jp1=new JPanel();
		jp1.setBorder(BorderFactory.createTitledBorder("键盘区"));
		jp1.setLayout(new GridLayout(4, 4, 5, 5));
		for(int i=0;i<10;i++) {
			JButton jb=new JButton(""+i);
			jb.setBorder(BorderFactory.createLineBorder(Color.pink, 3, true));
			jb.setFont(new Font("楷体", Font.PLAIN, 20));
			jp1.add(jb);
			jb.addActionListener(new MyActionListener());
		}
		//创建加号按钮
		JButton jb1=new JButton("+");
		jb1.setBorder(BorderFactory.createLineBorder(Color.green, 3, true));
		jb1.setFont(new Font("楷体", Font.PLAIN, 20));
		jp1.add(jb1);
		jb1.addActionListener(new MyActionListener());
		//创建减号按钮
		JButton jb2=new JButton("-");
		jb2.setBorder(BorderFactory.createLineBorder(Color.green, 3, true));
		jb2.setFont(new Font("楷体", Font.PLAIN, 20));
		jp1.add(jb2);
		jb2.addActionListener(new MyActionListener());
		//创建乘号按钮
		JButton jb3=new JButton("*");
		jb3.setBorder(BorderFactory.createLineBorder(Color.green, 3, true));
		jb3.setFont(new Font("楷体", Font.PLAIN, 20));
		jp1.add(jb3);
		jb3.addActionListener(new MyActionListener());
		//创建除号按钮
		JButton jb4=new JButton("/");
		jb4.setBorder(BorderFactory.createLineBorder(Color.green, 3, true));
		jb4.setFont(new Font("楷体", Font.PLAIN, 20));
		jp1.add(jb4);
		jb4.addActionListener(new MyActionListener());
		//创建等于号按钮
		JButton jb5=new JButton("=");
		jb5.setBorder(BorderFactory.createLineBorder(Color.green, 3, true));
		jb5.setFont(new Font("楷体", Font.PLAIN, 20));
		jp1.add(jb5);
		jb5.addActionListener(new MyActionListener());
		//创建清零按钮
		JButton jb6=new JButton("清零");
		jb6.setBorder(BorderFactory.createLineBorder(Color.green, 3, true));
//		jb6.setFont(new Font("楷体", Font.PLAIN, 20));
		jp1.add(jb6);
		jb6.addActionListener(new MyActionListener());
		jp1.setBounds(0, 65, 280, 280);
		con.add(jp1);
		setVisible(true);
	}
	//实现ActionListener接口
	class MyActionListener implements ActionListener{
		
		@Override
		public void actionPerformed(ActionEvent e) {//监听
			JButton jb=(JButton)e.getSource();
			String s=jb.getText();
			if(s.charAt(0)>='0'&&s.charAt(0)<='9') {
				fi.append(s);
			}
			else if(s.charAt(0)=='+') {
				int num=Integer.parseInt(fi.getText());
				numbers.add(num);
				yunsuanfu.add("+");
				fi.setText("");
			}else if(s.charAt(0)=='-') {
				int num=Integer.parseInt(fi.getText());
				numbers.add(num);
				yunsuanfu.add("-");
				fi.setText("");
			}else if(s.charAt(0)=='*') {
				int num=Integer.parseInt(fi.getText());
				numbers.add(num);
				yunsuanfu.add("*");
				fi.setText("");
			}else if(s.charAt(0)=='/') {
				int num=Integer.parseInt(fi.getText());
				numbers.add(num);
				yunsuanfu.add("/");
				fi.setText("");
			}else if(s.charAt(0)=='=') {
				int num=Integer.parseInt(fi.getText());
				numbers.add(num);
				outcome=numbers.poll();
				while(!numbers.isEmpty()||!yunsuanfu.isEmpty()) {
					String s1=yunsuanfu.poll();
					Integer in=numbers.poll();
					if(s1.charAt(0)=='+') {
						outcome+=in;
					}else if(s1.charAt(0)=='-') {
						outcome-=in;
					}else if(s1.charAt(0)=='*') {
						outcome*=in;
					}else {
						outcome/=in;
					}
				}
				fi.setText(""+outcome);
			}else {//清零
				fi.setText("");
			}	
		}
		
	}
	public static void main(String[] args) {
		new Testcacluate();
	}
}

由于水平有限,还没能实现按优先级来实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值