还是不够灵活,我需要加入括号以保证先后运算顺序
时间: 2024-03-08 15:48:31 浏览: 51
《含有括号的混合运算》教学课件.ppt
好的,为了考虑运算顺序,你可以使用Java中的ScriptEngine类来计算表达式。具体步骤如下:
1. 引入ScriptEngine类:
```java
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
```
2. 创建ScriptEngine对象,使用eval()方法计算表达式:
```java
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
String result = engine.eval(expression).toString();
```
其中,expression为带括号的表达式,例如"(a + b) - c"。
3. 在表达式中替换变量为对应的值:
```java
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey();
int value = entry.getValue();
expression = expression.replaceAll(key, String.valueOf(value));
}
```
完整的代码示例如下:
```java
import java.util.HashMap;
import java.util.Map;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class ReplaceString {
public static void main(String[] args) throws ScriptException {
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
String expression = "(a + b) - c";
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey();
int value = entry.getValue();
expression = expression.replaceAll(key, String.valueOf(value));
}
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
String result = engine.eval(expression).toString();
System.out.println(result);
}
}
```
输出结果为:0
希望这个答案对你有所帮助。
阅读全文