java 字符串 四则运算_Java实现字符串四则运算(不带括号版)(递归法)

递归思路:根据四则运算的优先级,优先级低的先拆分,再对拆分的字符串带入方法进行递归,直到不存在*/+-运算符。

import java.util.Scanner;

public class ArithmeticRules3 {

public static String computeString(String str, int type) {

String result = null;

String[] strs = null;

String regexCheck = ".*(\\*|\\/|\\+|\\-).*";

if(!str.matches(regexCheck)) {

return str;

}

strs = str.split(type == 1?"\\+":

type == 2?"\\-":

type == 3?"\\*":

type == 4?"\\/":"");

//以防出现首位出现负数导致拆分出空字符串,

//从而在转换成double类型时抛出empty string异常

result = strs[0].isEmpty()?"0":strs[0];

for(int i=1; i

if(strs[i].isEmpty()) strs[i] = "0";

double d1 = Double.parseDouble(computeString(result,type+1));

double d2 = Double.parseDouble(computeString(strs[i],type+1));

if(type == 1)

return d1 + d2 + "";

if(type == 2)

return d1 - d2 + "";

if(type == 3)

return d1 * d2 + "";

if(type == 4)

return d1 / d2 + "";

}

return computeString(result,type+1);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值