(1)实现“四则运算”的简易翻译器,要求: 实现加减乘除四则运算,允许同时有多个操作数,如:4+6*5-8 结果是26; 被操作数为整数,整数可以有多位; 处理空格; 输入错误显示错误提示,并返回命令状态“CALC”。Java代码实现
时间: 2024-11-22 13:35:33 浏览: 39
在Java中,你可以创建一个Calculator类,利用栈数据结构来实现这个简易的四则运算翻译器。这里是一个简单的例子:
```java
import java.util.Stack;
public class Calculator {
private Stack<String> tokens;
private String lastToken;
public Calculator() {
tokens = new Stack<>();
}
public void processInput(String input) {
for (char c : input.toCharArray()) {
if (Character.isDigit(c)) {
lastToken += c;
} else if (c == '+' || c == '-' || c == '*' || c == '/') {
if (!tokens.isEmpty() && !tokens.peek().equals("(")) {
tokens.push(lastToken);
lastToken = "";
}
tokens.push(c + "");
} else if (c == ' ') {
// 忽略空格
} else if (c == '(') {
tokens.push(c);
} else if (c == ')') {
while (!tokens.peek().equals('(')) {
calculate();
tokens.pop();
}
tokens.pop(); // 移除左括号
} else {
System.out.println("Invalid character: " + c);
return; // 输入错误,停止计算
}
}
if (!lastToken.isEmpty()) { // 如果输入最后还有数字未处理
tokens.push(lastToken);
}
while (!tokens.isEmpty()) {
calculate();
}
}
private void calculate() {
try {
double num1 = Double.parseDouble(tokens.pop());
char operator = tokens.pop().charAt(0);
double num2 = Double.parseDouble(tokens.pop());
switch (operator) {
case '+':
tokens.push(num1 + num2);
break;
case '-':
tokens.push(num1 - num2);
break;
case '*':
tokens.push(num1 * num2);
break;
case '/':
if (num2 != 0) {
tokens.push(num1 / num2);
} else {
System.out.println("Division by zero is not allowed.");
return;
}
break;
default:
throw new IllegalArgumentException("Unknown operator: " + operator);
}
} catch (NumberFormatException e) {
System.out.println("Invalid number format.");
return;
}
}
public String getCommandStatus() {
if (tokens.isEmpty()) {
return "CALC";
} else {
return "Error: Invalid expression.";
}
}
public static void main(String[] args) {
Calculator calc = new Calculator();
calc.processInput("4 + 6 * 5 - 8");
System.out.println(calc.getCommandStatus()); // 输出结果:CALC
}
}
```
这个计算器类首先将输入分割成一个个token,然后解析并计算表达式。注意,这只是一个基本示例,实际项目中可能需要更完整的错误检查和异常处理机制。
阅读全文