Java入门——计算器(功能篇)

上一篇简单实现了计算器的界面,这一篇开始实现功能。

 

简要说明

功能的实现主要分了操作数按钮的监听事件和操作符按钮的监听事件。

另,本demo只作为入门学习使用,并非完善的计算器,所以有许多的bug,待后续完善。

 

变量声明

在上一篇界面的基础上继续编写代码。

首先添加了如下变量在自己的Panel类中

public static double result; // 计算结果
	public static String command; //操作符,计算命令
	public static boolean start; //标志,标识是不是一个等式的开始(一个等式开始需要清除上一次的显示结果)

因为我将各个类拆分到了不同的包中,所以将变量设置成了共有的静态变量。

在CaculatorPanel的构造方法中进行初始化

//初始化变量
		result=0;
		command="=";
		start=true;

操作符按钮监听事件

package CaculatorActionListener;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import CaculatorFrame.CaculatorPanel;

public class NumberActionListener implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		// 获得输入的内容
		String input = e.getActionCommand(); // 获得按钮的内容

		if (CaculatorPanel.start) {// 等式开始
			CaculatorPanel.display.setText("");// 清除上一次显示的结果
			CaculatorPanel.start = false;
		}

		// 设置display显示连续输入的数字
		CaculatorPanel.display.setText(CaculatorPanel.display.getText() + input);

	}

}

操作符按钮监听事件

package CaculatorActionListener;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import CaculatorFrame.CaculatorPanel;

public class OperaActionListener implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		//获得输入的操作符
		String c=e.getActionCommand();
		if(CaculatorPanel.start) {
			CaculatorPanel.command=c; //存下操作符	
		}else {
			if(CaculatorPanel.command.equals("+")) {
				CaculatorPanel.result+=Double.parseDouble(CaculatorPanel.display.getText());
			}else if(CaculatorPanel.command.equals("-")) {
				CaculatorPanel.result-=Double.parseDouble(CaculatorPanel.display.getText());
			}else if(CaculatorPanel.command.equals("*")) {
				CaculatorPanel.result*=Double.parseDouble(CaculatorPanel.display.getText());
			}else if(CaculatorPanel.command.equals("/")) {
				CaculatorPanel.result/=Double.parseDouble(CaculatorPanel.display.getText());
			}else if(CaculatorPanel.command.equals("=")) {
				CaculatorPanel.result=Double.parseDouble(CaculatorPanel.display.getText());
			}
			//打印结果
			CaculatorPanel.display.setText(""+CaculatorPanel.result);
			CaculatorPanel.command=c;
			CaculatorPanel.start=true;
		}

	}

}

好的,bug不说了,草草结尾,再见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值