Java实现计算器 1.0版

Version 1.0

功能实现:
1.基础计算机界面布局
2.实现简单的四则运算操作(加减乘除)和清除功能


效果:


Java实现计算器 Version 1.0

代码实现:

package pers.nico.windowtest;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.StringTokenizer;

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

public class CalculatorTest {
	public static void main(String[] args) {
		CalculatorTest test = new CalculatorTest();
		test.Caluclator();
	}
	
	private JFrame frame;
	//0-9个数字按钮
	private JButton button0,button1,button2,button3,button4,button5,button6,button7,button8,button9;
	//.,+,-,*,/,= 6个按钮(bot 小数点,add 加,sub 减,mul 乘,div 除,equ 等于)
	private JButton bot,add,sub,mul,div,equ;
	//清除按钮
	private JButton buttonclear;
	
	//南部面板,放置数字和运算符按钮
	private JPanel panelsouth;
	//北部面板,放置文本框和清除按钮
	private JPanel panelnorth;
	
	//显示输入的方式
	private JTextField text;
	
	
	public void Caluclator()
	{
		frame = new JFrame("Nico的计算器-Version 0.1");
		BorderLayout blo = new BorderLayout();
		//设置布局管理器为BorderLayout
		frame.setLayout(blo);
		Dimension preferredsize = new Dimension(80,60);//设置按钮大小
		//设置文本框区域
		text = new JTextField(15);
		text.setFont(new Font("黑体",Font.BOLD,20));
		//实例化清除按钮并设置按钮显示文字
		buttonclear = new JButton("清除");
		
		//实例化数字按钮并设置按钮显示文字
		button0 = new JButton("0");
		button0.setPreferredSize(preferredsize);//设置按钮大小
		button1 = new JButton("1");
		button2 = new JButton("2");
		button3 = new JButton("3");
		button4 = new JButton("4");
		button5 = new JButton("5");
		button6 = new JButton("6");
		button7 = new JButton("7");
		button8 = new JButton("8");
		button9 = new JButton("9");
		
		//实例化符号按钮并设置按钮显示文字
		bot = new JButton(".");
		add = new JButton("+");
		sub = new JButton("-");
		mul = new JButton("*");
		div = new JButton("/");
		equ = new JButton("=");
		
		panelsouth = new JPanel();
		//设置南部面板采用网格布局(4*4)
		panelsouth.setLayout(new GridLayout(4,4));
		
		panelnorth = new JPanel();
		//设置北部面板采用流式布局
		panelnorth.setLayout(new FlowLayout());
		
		//将文本框和清除按钮添加到北部面板
		panelnorth.add(text);
		panelnorth.add(buttonclear);
		//将北部面板添加到主面板
		frame.add(panelnorth,BorderLayout.NORTH);
		
		//将数字和符号添加到南部面板
		//第1行
		panelsouth.add(button7);
		panelsouth.add(button8);
		panelsouth.add(button9);
		panelsouth.add(div);
		//第2行
		panelsouth.add(button4);
		panelsouth.add(button5);
		panelsouth.add(button6);
		panelsouth.add(mul);
		//第3行
		panelsouth.add(button1);
		panelsouth.add(button2);
		panelsouth.add(button3);
		panelsouth.add(sub);
		//第4行
		panelsouth.add(bot);
		panelsouth.add(button0);
		panelsouth.add(add);
		panelsouth.add(equ);
		//将南部面板添加到主面板
		frame.add(panelsouth,BorderLayout.SOUTH);
		
		MyEvent();//数字和符号按钮的事件处理
		
		frame.setSize(300, 350);
		frame.setVisible(true);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	//功能方法
	//事件处理方法
	public void MyEvent()
	{
		//为各个按钮添加事件处理
		jButton(button0);
		jButton(button1);
		jButton(button2);
		jButton(button3);
		jButton(button4);
		jButton(button5);
		jButton(button6);
		jButton(button7);
		jButton(button8);
		jButton(button9);
		jButton(bot);
		jButton(add);
		jButton(sub);
		jButton(mul);
		jButton(div);
		
		//清除按钮事件,文本框为空
		buttonclear.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				text.setText("");
			}
		});
		
		//"="事件处理
		equ.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				text.setText(text.getText()+equ.getText());
				try 
				{
					//加法运算
					if(text.getText().contains("+"))
					{
						StringTokenizer st1 = new StringTokenizer(text.getText(),"+");
						double d1,d2=0;
						d1 = Double.parseDouble(st1.nextToken());
						while(st1.hasMoreElements())
						{
							StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"="); 
							d2 = Double.parseDouble(st2.nextToken());
						}
						//将运算结果放到text
						text.setText(text.getText()+""+(d1+d2));
					}
					//减法运算
					else if(text.getText().contains("-"))
					{
						StringTokenizer st1 = new StringTokenizer(text.getText(),"-");
						double d1,d2=0;
						d1 = Double.parseDouble(st1.nextToken());
						while(st1.hasMoreElements())
						{
							StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
							d2=Double.parseDouble(st2.nextToken());
						}
						//将运算结果放到text
						text.setText(text.getText()+""+(d1-d2));
					}
					//乘法运算
					else if(text.getText().contains("*"))
					{
						StringTokenizer st1 = new StringTokenizer(text.getText(),"*");
						double d1,d2=0;
						d1 = Double.parseDouble(st1.nextToken());
						while(st1.hasMoreElements())
						{
							StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
							d2=Double.parseDouble(st2.nextToken());
						}
						//将运算结果放到text
						text.setText(text.getText()+""+(d1*d2));
					}
					//除法运算
					else if(text.getText().contains("/"))
					{
						StringTokenizer st1 = new StringTokenizer(text.getText(),"/");
						double d1,d2=0;
						d1 = Double.parseDouble(st1.nextToken());
						while(st1.hasMoreElements())
						{
							StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
							d2=Double.parseDouble(st2.nextToken());
						}
						//将运算结果放到text
						text.setText(text.getText()+""+(d1/d2));
					}
				}
				catch(Exception e1)
				{
					JOptionPane.showMessageDialog(null, "输入的不是简单的四则运算公式!");
					text.setText(null);
					e1.printStackTrace();
				}
			}
		});
	}
	//数字和符号按钮的事件处理方法
	public void jButton (JButton button)
	{
		button.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				StringBuffer buffer = new StringBuffer();
				buffer.append(text.getText());
				buffer.append(button.getText());
				text.setText(buffer.toString());
			}
		});
	}
}

编程小白,仅作学习记录📝

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值