Java字符串转换成算术表达式(含括号)计算并输出结果的代码

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java字符串转换成算术表达式(含括号)计算并输出结果的代码在这里插入图片描述乘号无法显示这个是算式

思路:根据优先级一步一步的计算,先()再乘除再加减.
给定一个字符串算式表达式:((789+66)3)+((123000021/23+3)-11)2
字符串先拿到最后一个‘(’,根据最后一个‘(’截取右侧所有字符串:1230000
21/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("注意:计算过程中不能出现负数!");
	    System.out.println("表达式必须规范!");
	    System.out.println("请输入你所要计算的算式,回车结束:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值