Java字符串转换成算术表达式(含括号)计算并输出结果的代码
乘号无法显示这个是算式
思路:根据优先级一步一步的计算,先()再乘除再加减.
给定一个字符串算式表达式:((789+66)3)+((123000021/23+3)-11)2
字符串先拿到最后一个‘(’,根据最后一个‘(’截取右侧所有字符串:123000021/23+3)-11)2。再根据截取出来的字符串截取‘)’以前的字符串,最终的到括号里面的字符串:123000021/23+3,再去判断乘除(乘除的优先级高)得到结果:25830000,将123000021置换为25830000得到25830000/23+3,调用自身直到算式中没有或者/。再计算±符号,同理一步步置换,第一个括号计算完成后再计算下一个括号。知道没有括号,得到简单的四则运算,继续调用一次乘除方法以及加减方法得到最终结果。
注意:正则表达式不会写。所以只能手动要求运算表达式必须规范,而且运算过程中不能出现负数。
代码如下:
package test;
import java.text.NumberFormat;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
//String str="((789+66)*3)+(((1230000-4)*21/23+3)-11)*2";//输入的字符串
Scanner sc = new Scanner(System.in);//控制台输入字符串
System.out.println("注意:计算过程中不能出现负数!");
Syste

本文介绍了如何将Java字符串转换成含有括号的算术表达式并进行计算,遵循优先级规则:先括号、再乘除、后加减。以算式((789+66)3)+((123000021/23+3)-11)2为例,逐步解析并替换子表达式,直至得到最终结果。由于正则表达式限制,要求输入的运算表达式必须规范,且运算过程不支持负数。
最低0.47元/天 解锁文章
2396





