Java实现简单四则运算计算器
需积分: 10 71 浏览量
更新于2024-09-13
收藏 64KB DOC 举报
"Java实现简单四则运算计算器的代码片段"
在Java编程中,我们可以创建一个简单的文本计算器来执行基本的四则运算。这个计算器不处理括号内的运算,但可以进行加、减、乘、除操作。下面的代码示例展示了如何在MyEclipse集成开发环境中实现这一功能。
首先,我们引入了`java.math.BigDecimal`类,这是一个用于进行高精度数学计算的类。`java.util.Scanner`用于从用户那里获取输入。`java.util.Stack`用于存储数字和运算符,以便遵循正确的运算顺序。
```java
package com.cbd.text;
import java.math.BigDecimal;
import java.util.Scanner;
import java.util.Stack;
/**
* 功能描述: 只计算不带括号的加,减,乘,除
* @version 1.0
* @data: 2013-3-23 下午06:53:39
* @author wangzq
*/
public class JSQ {
private Stack<BigDecimal> numbers = new Stack<BigDecimal>();
private Stack<Character> chs = new Stack<Character>();
/**
* 比较当前操作符与栈顶元素操作符优先级,如果比栈顶元素优先级高,则返回true,否则返回false
* @param str 需要进行比较的字符
* @return 比较结果
* true代表比栈顶元素优先级高,false代表比栈顶元素优先级低
*/
private boolean compare(char str) {
if (chs.empty()) { // 当为空时,显然当前优先级最低,返回高
return true;
}
char last = (char) chs.lastElement();
switch (str) {
case '*': {
// '*/'优先级只比'+-'高
if (last == '+' || last == '-')
return true;
else
return false;
}
case '/': {
if (last == '+' || last == '-')
return true;
else
return false;
}
// '+-'为最低,一直返回false
case '+':
return false;
case '-':
return false;
}
return true;
}
public BigDecimal caculate(String st) {
// ...
}
// ...
}
```
在`compare`方法中,我们定义了运算符的优先级规则。乘法和除法具有比加法和减法更高的优先级。当栈顶运算符是加法或减法时,新的乘法或除法运算符会优先于它们。加法和减法具有最低的优先级。
`caculate`方法是计算器的核心,它会遍历输入字符串并根据运算符的优先级处理它们。它将输入的字符串转换为字符数组,逐个处理每个字符,将其作为数字或运算符放入相应的栈中。通过这种方式,我们可以确保遵循正确的运算顺序,即先乘除后加减。
在实际的代码中,`caculate`方法会继续解析输入字符串,处理数字和运算符,然后根据栈中的元素进行计算。在处理完所有字符后,栈中剩余的元素应只有一个结果,即计算的最终值。
这个简单的计算器没有处理错误输入,例如无效的字符或除以零的情况。在实际应用中,应该添加适当的错误处理机制以确保程序的健壮性。
总结来说,这个Java代码片段提供了一个基础的文本计算器实现,它使用栈数据结构处理基本的四则运算。通过理解和学习这段代码,开发者可以进一步了解Java的运算符优先级、栈的使用以及如何处理数学计算。
2023-11-16 上传
2009-05-21 上传
2022-09-14 上传
2011-02-26 上传
2007-12-29 上传
2011-09-30 上传
2008-10-09 上传
2010-03-08 上传
2010-12-16 上传
wzq627
- 粉丝: 4
- 资源: 1
最新资源
- Angular程序高效加载与展示海量Excel数据技巧
- Argos客户端开发流程及Vue配置指南
- 基于源码的PHP Webshell审查工具介绍
- Mina任务部署Rpush教程与实践指南
- 密歇根大学主题新标签页壁纸与多功能扩展
- Golang编程入门:基础代码学习教程
- Aplysia吸引子分析MATLAB代码套件解读
- 程序性竞争问题解决实践指南
- lyra: Rust语言实现的特征提取POC功能
- Chrome扩展:NBA全明星新标签壁纸
- 探索通用Lisp用户空间文件系统clufs_0.7
- dheap: Haxe实现的高效D-ary堆算法
- 利用BladeRF实现简易VNA频率响应分析工具
- 深度解析Amazon SQS在C#中的应用实践
- 正义联盟计划管理系统:udemy-heroes-demo-09
- JavaScript语法jsonpointer替代实现介绍