用Java简单的实现一个加减乘除的计算器

@用Java简单的实现一个加减乘除的计算器

链接: link.
在这里插入图片描述
这是大概的窗口,也可以自己修改一下样式

这里是我的代码.

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

//ActionListener,处理按钮事件,点击按钮的时候会把文本显示在文本框中
public class Main implements ActionListener {
	
	//显示的文本框
	JTextField  tf;
	//按钮
	JButton bt;
	//用数组的方法定义按钮上面的文本
	String btText[] = { "7","8","9","/",
						"4","5","6","*",
						"1","2","3","-",
						"0",".","=","+",};
	
	
	public static void main(String args[]) {
		//程序进行的入口
		Main app =new Main();
		app.go();
	}
	//所有功能都在go里面
	void go() {
		
		//先创建窗口
		JFrame frame=new JFrame("Jisuanqi");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//在显示之前创建出来
		
		tf=new JTextField();
		//设置文本框样式
		tf.setPreferredSize(new Dimension(300,50));
		
		
		
		bt=new JButton();
		//把文本框和按钮添加到窗体当中去
		//文本框添加到北边
		frame.getContentPane().add(tf,BorderLayout.NORTH);
		frame.getContentPane().add(bt,BorderLayout.CENTER);
		
		//面容面板
		JPanel p=new JPanel();
		//设置网格布局
		p.setLayout( new GridLayout(4,4));
		//添加16个按钮
		for(int i=0;i<16;i++) {
			JButton bt=new JButton(btText[i]);
			p.add(bt);
			
			//添加事件处理
			bt.addActionListener(this);
		}
		//把p添加到窗体当中去,并且会覆盖掉上边的bt——>frame.getContentPane().add(bt,BorderLayout.CENTER);
		frame.getContentPane().add(p,BorderLayout.CENTER);
		
		//窗口尺寸
		frame.setSize(300, 400);
		frame.setVisible(true);
		
	}
	//处理按钮事件,点击按钮的时候会把文本显示在文本框中
	
	//第一个运算数字
	String strA="";
	//第二个运算数字
	String strB="";
	//运算符,初始化给一个任意字符
	char opreator='@';
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		//把点击得到的字符进行处理
		String action=e.getActionCommand();
		
		if(action .charAt(0)>='0'&&action .charAt(0)<='9') {
			//表明运算符等于初始值,还没有点击运算符。说明该字符是第个数据
			if(opreator=='@') {
				if(action .charAt(0)=='0') {
					if(strA.length()>0) {
						//对第一个数字处理字符相加按一次9和一次8得到的是98而不是17
						strA+=action;
						//把点击得到的数字添加到文本框中去
						tf.setText(strA);
					}
				}else {
						strA+=action;
						tf.setText(strA);
				}
			}else 
			//否则是第二个数据
				{
					if(action .charAt(0)=='0') {
						if(strB.length()>0) {
							//对第一个数字处理字符相加按一次9和一次8得到的是98而不是17
							strB+=action;
							//把点击得到的数字添加到文本框中去
							tf.setText(strB);
						}
					}else {
						strB+=action;
						tf.setText(strB);
					}
					
			}
			
			
		}else if(action.charAt(0)=='+'||action.charAt(0)=='-'||action.charAt(0)=='*'||action.charAt(0)=='/') {
				//判断是否是加减乘除
				opreator= action.charAt(0);
				
			}else if(action.charAt(0)=='=') {
				 	if(opreator=='+') {
					
					int c=Integer.parseInt(strA)+Integer.parseInt(strB);
					/*
					 * 把结果c添加到文本框,因为c是int类型的所以要加一个空字符串转化成字符串类型
					tf.setText(c+"");
					 * */
					//把结果添加到文本框
					tf.setText(String.valueOf(c));
				}else if(opreator=='-') {
					
					int c=Integer.parseInt(strA)-Integer.parseInt(strB);
					tf.setText(String.valueOf(c));
				}else if(opreator=='*') {
					
					int c=Integer.parseInt(strA)*Integer.parseInt(strB);
					tf.setText(String.valueOf(c));
				}else if(opreator=='/') {
					
					int c=Integer.parseInt(strA)/Integer.parseInt(strB);
					tf.setText(String.valueOf(c));
				}
				 	
				 //第一次计算完成后进行数据初始化以进行下一次的运算
				 	opreator='@';
				 	strA="";
				 	strB="";
			}
	
	}
}

  • 14
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值