java 自动将 一个描述运算的字符串,为乘法与除法增加括号。比如 字符串a="1+2*3" ,转换为 a ="1+(2*3)". b = "1+{SI1005}*3" 转换为b="1+({SI1005}*3)". c="1+{function:0}*3" 转换为 c="1+({function:0}*3)" .考虑乘号除号会出现多次的情况。
时间: 2024-04-22 15:24:34 浏览: 130
你可以使用递归的方法来实现这个功能。下面是一个示例的Java代码:
```java
public class ExpressionConverter {
public static String addParentheses(String expression) {
StringBuilder sb = new StringBuilder();
int index = 0;
while (index < expression.length()) {
char currentChar = expression.charAt(index);
if (currentChar == '*' || currentChar == '/') {
sb.append("(");
sb.append(currentChar);
index++;
} else if (currentChar == '+' || currentChar == '-') {
sb.append(currentChar);
index++;
} else if (currentChar == '{') {
int closingBracketIndex = expression.indexOf('}', index);
if (closingBracketIndex != -1) {
String innerExpression = expression.substring(index, closingBracketIndex + 1);
sb.append(addParentheses(innerExpression.substring(1, innerExpression.length() - 1)));
index = closingBracketIndex + 1;
} else {
sb.append(currentChar);
index++;
}
} else {
sb.append(currentChar);
index++;
}
}
return sb.toString();
}
public static void main(String[] args) {
String a = "1+2*3";
String b = "1+{SI1005}*3";
String c = "1+{function:0}*3";
System.out.println(addParentheses(a)); // 输出: 1+(2*3)
System.out.println(addParentheses(b)); // 输出: 1+({SI1005}*3)
System.out.println(addParentheses(c)); // 输出: 1+({function:0}*3)
}
}
```
这段代码中的 `addParentheses` 方法会将输入的表达式中的乘法和除法运算符周围添加括号。它使用一个循环来遍历表达式的每个字符,根据不同的情况进行处理。当遇到乘法或除法运算符时,会在其前后添加括号。当遇到大括号时,会将大括号内的表达式递归地传递给 `addParentheses` 方法进行处理。
希望这个示例能帮助到你!如果你有任何其他问题,请随时问我。
阅读全文