java编写一个方法,将一个字符串作为参数, 该字符串具有符号,操作数 形式的算术表达式, 其中符号是加法或减法运算,操作数是整数,输出运算结果。 如果操作数不是数值,则程序不应因错误而失败。 为此,您需要编写一个异常处理程序来捕获非数字值。 该程序应该向控制台打印一条关于错误类型操作数的消息,并且不再输出运算结果。 使用 NumberFormatException。
时间: 2024-01-21 18:16:35 浏览: 64
可以使用如下的 Java 代码实现该方法:
```java
public static void calculate(String expression) {
String[] tokens = expression.split("\\s+");
int result = 0;
try {
result = Integer.parseInt(tokens[0]);
for (int i = 1; i < tokens.length; i += 2) {
char operator = tokens[i].charAt(0);
int operand = Integer.parseInt(tokens[i + 1]);
if (operator == '+') {
result += operand;
} else if (operator == '-') {
result -= operand;
} else {
System.out.println("Invalid operator: " + operator);
return;
}
}
} catch (NumberFormatException e) {
System.out.println("Invalid operand: " + e.getMessage());
return;
}
System.out.println("Result: " + result);
}
```
该方法首先将输入的表达式按照空格分割成一个字符串数组。然后使用一个循环遍历字符串数组中的元素,如果当前元素是操作数,则将其转换为整数并根据前面的运算符进行相应的运算;如果当前元素是运算符,则将其保存下来,等待下一个操作数的到来。如果遇到无法识别的运算符,则输出错误信息并退出方法。如果遇到无法转换为整数的操作数,则捕获 NumberFormatException 异常并输出错误信息。最后,输出运算结果。
例如,调用如下代码:
```java
calculate("10 + 20 - 5");
calculate("10 + abc - 5");
calculate("10 + 20 * 5");
```
将输出以下结果:
```
Result: 25
Invalid operand: For input string: "abc"
Invalid operator: *
```
阅读全文