用Java实现的计算器,原理看代码注释,具体内容如下public class MyCalculator {
public static void main(String[] args) {String obj = "6+(8/2)+6/3+1*8 + 30";ArrayList
/*** 采用后续表达式计算结果* 1、当前字符串为数字时,直接入栈* 2、当前字符串为计算符时,取出栈中的前两个计算* 3、将计算结果再放入到栈中,栈中最后剩余的一个元素就是要求的结果*/ private static int calculator(ArrayList
for (int i = 0; i < result.size(); i++) {String symbol = result.get(i);if (isDigital(symbol)) { //数字直接入栈stack.push(Integer.parseInt(symbol));} else { // 处理操作符int num1, num2;num1 = stack.pop(); //取出两个数num2 = stack.pop();switch (symbol) {case "+":stack.push(num2 + num1);break;case "-":stack.push(num2 - num1);break;case "*":stack.push(num2 * num1);break;case "/":stack.push(num2 / num1);break;default:break;}}}return stack.pop();}
/*** 中序遍历改为后续遍历*/ private static ArrayList
/*** 首先对String 进行格式化 转化成ArrayList* @param src 3*5+8;* @return ArrayList 3 * 5 + 8*/ private static ArrayList /*** 判断是否为数字* @param symbol 782 或者 + - * /* @return true or false*/ private static boolean isDigital(String symbol) {return !symbol.equals("+") && !symbol.equals("-")&& !symbol.equals("*") && !symbol.equals("/")&& !symbol.equals("(") && !symbol.equals(")");} private static int inPriority(String ch) {switch (ch) {case "+":case "-":return 2;case "*":case "/":return 4;case ")":return 7;case "(":return 1;default:return 0;}} private static int outPriority(String ch) {switch (ch) {case "+":case "-":return 3;case "*":case "/":return 5;case ")":return 1;case "(":return 7;default:return 0;}}} 以上全部为本篇文章的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。 您可能感兴趣的文章:Java简易计算器程序设计java实现简易计算器功能java 简单的计算器程序实例代码java实现简单的计算器类实例java实现计算器功能用Java实现简单计算器功能Java编写简单计算器的完整实现过程200行Java代码编写一个计算器程序Java编写计算器的常见方法实例总结用Java打造简易计算器的实现步骤
