# calculator_java **Repository Path**: flameboyence/calculator_java ## Basic Information - **Project Name**: calculator_java - **Description**: 计算器,加、减、乘、除括号混合运算。java实现 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-11-15 - **Last Updated**: 2023-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # calculator ### 简介 计算器,加、减、乘、除括号混合运算。 ### 开发环境 IDEA2019 JDK1.8.0_201 ### 算法 #### 1.字符串转中缀表达式 扫描字符串,遇到数字或"."则将该字符添加到tempString,如果遇到"+-*/()"则将tempString(非空)加入中缀表达式,清空tempString,再将"+-*/()"加入后缀表达式,直到扫描完整个字符串。 #### 2.中缀表达式转后缀表达式 扫描中缀表达式,如果扫描到的字符是一个操作符,分三种情况: (1)如果堆栈是空的,直接将操作符存储到堆栈中(push it) (2)如果该操作符的优先级大于堆栈出口的操作符,就直接将操作符存储到堆栈中(push it) (3)如果该操作符的优先级低于堆栈出口的操作符,就将堆栈出口的操作符导出(pop it),直到该操作符的优先级大于堆栈顶端的操作符。将扫描到的操作符导入到堆栈中(push)。 如果遇到的操作符是左括号"(”,就直接将该操作符输出到堆栈当中。该操作符只有在遇到右括号“)”的时候移除。这是一个特殊符号该特殊处理。如果扫描到的操作符是右括号“)”,将堆栈中的操作符导出(pop)到output中输出,直到遇见左括号“(”。 将堆栈中的左括号移出堆栈(pop )。继续扫描下一个字符 如果输入的中缀表达式已经扫描完了,但是堆栈中仍然存在操作符的时候,我们应该讲堆栈中的操作符导出并输入到output 当中。 #### 3.后缀表达式求值 从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素 op 栈顶元素),并将结果入栈;重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果 ### 结果 ![结果](https://images.gitee.com/uploads/images/2020/1115/174110_03196b0f_6518456.png "屏幕截图.png")