Java实现简单四则运算计算器

需积分: 10 1 下载量 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的运算符优先级、栈的使用以及如何处理数学计算。