java不使用正则表达式编写一个方法,该方法将包含形式为“number±number±...±number”的算术表达式的字符串作为参数, 如果“+”或“–”字符代替“±”操作标记(例如,“10+23–2-80”),此外,操作字符前后可以有任意数量的空格。 该方法应返回此表达式的值(整数)
时间: 2023-05-28 15:07:54 浏览: 126
bignumber.js-nolookahead:BigNumber.js版本,没有针对web3.js 0.xx的正则表达式
以下是一个Java方法,可以解析包含“+”、“-”、“ ”的算术表达式,并返回其整数值:
```
public static int evaluate(String expression) {
int result = 0;
boolean add = true;
int num = 0;
// 遍历表达式中的每个字符
for (int i = 0; i < expression.length(); i++) {
char c = expression.charAt(i);
// 如果是空格,则忽略
if (c == ' ') {
continue;
}
// 如果是“+”或“-”,则计算之前的数字,并更新总结果和操作符
if (c == '+' || c == '-') {
result += add ? num : -num;
add = (c == '+');
num = 0;
}
// 如果是数字,则将其添加到当前的数字中
else if (Character.isDigit(c)) {
num = num * 10 + (c - '0');
}
// 如果是其他字符,则抛出异常
else {
throw new IllegalArgumentException("Invalid character in expression: " + c);
}
}
// 计算最后一个数字,并返回结果
result += add ? num : -num;
return result;
}
```
该方法使用了一个布尔变量 `add`,用于跟踪当前的操作符是“+”还是“-”,以及一个整数变量 `num`,用于跟踪当前正在构建的数字。遍历输入字符串中的每个字符,根据字符类型执行不同的操作,最后计算最后一个数字的值,并将其添加到结果中。如果输入字符串包含无效字符,则该方法会抛出一个异常。
阅读全文