用java语言,递归方法,以解释器模式实现两位数简单加减法运算
时间: 2024-05-05 14:22:54 浏览: 6
以下是一个简单的递归解释器实现,可以实现两位数的简单加减法运算:
```java
public class Interpreter {
private String input;
private int index;
public Interpreter(String input) {
this.input = input.replaceAll("\\s+", "");
this.index = 0;
}
public int interpret() {
return expression();
}
private int expression() {
int result = term();
while (index < input.length()) {
char op = input.charAt(index);
if (op != '+' && op != '-') {
break;
}
index++;
int right = term();
if (op == '+') {
result += right;
} else {
result -= right;
}
}
return result;
}
private int term() {
int result = factor();
while (index < input.length()) {
char op = input.charAt(index);
if (op != '+' && op != '-') {
break;
}
index++;
int right = factor();
if (op == '+') {
result += right;
} else {
result -= right;
}
}
return result;
}
private int factor() {
int result = digit();
index++;
return result;
}
private int digit() {
char ch = input.charAt(index);
if (!Character.isDigit(ch)) {
throw new RuntimeException("Invalid input: " + input);
}
return Character.getNumericValue(ch);
}
}
```
在这个实现中,`Expression()`方法用于解析表达式,`Term()`方法用于解析项,`Factor()`方法用于解析因子,`Digit()`方法用于解析数字。我们使用`index`变量来跟踪我们解释的输入的位置。
我们可以使用以下代码测试我们的解释器:
```java
public static void main(String[] args) {
Interpreter interpreter = new Interpreter("10+20-5");
int result = interpreter.interpret();
System.out.println(result); // 输出 25
}
```
这个测试用例将输出 `25`,因为我们的解释器正确计算了输入表达式 `10+20-5` 的结果。