java编写一个方法,该方法将包含形式为“number±number±...±number”的算术表达式的字符串作为参数, 如果“+”或“–”字符代替“±”操作标记(例如,“10+23–2-80”),此外,操作字符前后可以有任意数量的空格。 该方法应返回此表达式的值(整数)
时间: 2023-05-28 15:07:52 浏览: 112
以下是一个可能的实现:
```java
public static int evaluateExpression(String expression) {
// 去除所有空格
expression = expression.replaceAll("\\s", "");
// 切分成数字和操作符列表
String[] tokens = expression.split("(?=[+-])|(?<=[+-])");
int result = 0;
boolean addition = true; // 初始为加法
for (String token : tokens) {
if (token.equals("+")) {
addition = true; // 切换为加法
} else if (token.equals("-")) {
addition = false; // 切换为减法
} else {
int number = Integer.parseInt(token);
result = addition ? result + number : result - number; // 根据当前操作符计算值
}
}
return result;
}
```
这个方法首先使用正则表达式将所有空格去掉,然后使用正则表达式切分表达式成数字和操作符的列表。在循环中,根据当前操作符计算值并更新结果。最后返回结果。
注意,这个实现假设输入的表达式是合法的,即数字和操作符交替出现,并且以数字结尾。如果输入的表达式不合法,这个实现可能会抛出异常或者返回错误的结果。
阅读全文