Java实现简易计算器:加减乘除与三角函数
"该资源是一个简单的计算器程序,采用Java Swing库构建GUI,支持基本的加减乘除运算以及正弦函数(sin)和平方根(sqrt)计算。适合初学者学习使用。" 这个简易计算器程序是用Java编程语言编写的,主要使用了Swing库来创建图形用户界面(GUI)。在Swing中,`JFrame` 是一个顶级容器,用于容纳其他组件,如按钮和文本框。在这个计算器中,`MyCalc` 类扩展了`JFrame`,并实现了`ActionListener` 接口,以便处理按钮点击事件。 `JTextField` `txtResult` 用于显示计算结果,设置为右对齐,并使用了大号字体的`TimesRoman`。计算器的布局管理器是`BorderLayout`,它将`txtResult` 放在了框架的北部(North)位置。 `BUTTONS_CAPTION` 数组包含了所有按钮的标签,包括数字、运算符以及特殊功能(如sin、sqrt、+/-、1/x)。`btnsGroup` 数组则用于存储这些按钮对象,确保每个按钮都有相应的操作。 `ArrayList<String>` `opObjs` 用来存储运算对象,这在进行计算时很有用,因为计算器需要记住当前的操作序列。 在程序中,`for` 循环用于创建和添加按钮到框架中,每个按钮都关联了一个`ActionListener`,这样当按钮被点击时,对应的`actionPerformed` 方法会被调用,执行相应的计算逻辑。 计算器的运算逻辑可能包含以下步骤: 1. 用户输入数字或运算符时,会更新`txtResult` 的显示。 2. 当按下等号(=)按钮时,程序将解析`txtResult` 中的表达式,执行计算,并将结果显示回`txtResult`。 3. 特殊功能按钮(如sin和sqrt)会在执行计算时调用相应的数学函数。 4. 为了处理加减乘除等操作,程序需要跟踪当前的操作符和操作数,这可能涉及到一个栈结构来存储中间结果。 这个计算器示例对于Java初学者来说是一个很好的实践项目,因为它涵盖了GUI编程、事件处理、字符串解析以及基础的数学运算。通过这个项目,开发者可以学习到如何创建交互式的应用程序,并了解Java Swing库的基本用法。
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class MyCalc extends JFrame implements ActionListener {
/**
* 结果输出框
*/
private JTextField txtResult = new JTextField("0");
/**
* 按钮标签
*/
private final String BUTTONS_CAPTION[] = {
"清零", "退格",
"7", "8", "9", "+", "sin",
"4", "5", "6", "-", "sqrt",
"1","2", "3", "*", "+/-",
"0", ".", "=", "/", "1/x"};
* 按钮组
*/
private JButton btnsGroup[] = new JButton[BUTTONS_CAPTION.length];
/**
* 缓存操作数、运算符
*/
private ArrayList<String> opObjs = new ArrayList<String>();
public MyCalc() {
super("计算器");
// 开始布局
setLayout(new BorderLayout(10, 10));
// 结果输出框直接放置
txtResult.setFont(new Font("TimesRoman", Font.BOLD, 40));
txtResult.setHorizontalAlignment(JTextField.RIGHT);
add(txtResult, BorderLayout.NORTH);
// create buttons
for (int i = 0; i < BUTTONS_CAPTION.length; i++) {
btnsGroup[i] = new JButton(BUTTONS_CAPTION[i]);
btnsGroup[i].setFont(new Font("TimesRoman", Font.BOLD, 20));
btnsGroup[i].addActionListener(this);
}
// 放置按钮组
JPanel p1 = new JPanel();
p1.setLayout(new BorderLayout(10, 10));
剩余17页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 深入理解23种设计模式
- 制作与调试:声控开关电路详解
- 腾讯2008年软件开发笔试题解析
- WebService开发指南:从入门到精通
- 栈数据结构实现的密码设置算法
- 提升逻辑与英语能力:揭秘IBM笔试核心词汇及题型
- SOPC技术探索:理论与实践
- 计算图中节点介数中心性的函数
- 电子元器件详解:电阻、电容、电感与传感器
- MIT经典:统计自然语言处理基础
- CMD命令大全详解与实用指南
- 数据结构复习重点:逻辑结构与存储结构
- ACM算法必读书籍推荐:权威指南与实战解析
- Ubuntu命令行与终端:从Shell到rxvt-unicode
- 深入理解VC_MFC编程:窗口、类、消息处理与绘图
- AT89S52单片机实现的温湿度智能检测与控制系统