计算器类java,其中操作符和操作数时间可以有多个空格隔开,但仍然要计算出正确结果。例如:3 + 4=7
时间: 2024-09-22 13:06:58 浏览: 32
在Java中,如果你想要创建一个能够处理类似"3 + 4=7"这种格式的计算器类,你可以使用正则表达式来解析输入,并忽略多余的空格。下面是一个简单的示例:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Calculator {
public static double calculate(String expression) {
// 定义正则表达式模式,匹配数字和运算符,允许任意数量的空格
String regex = "(\\d+)([\\s]+)?(\\+|-|\\*|\\/)(\\s+)?(\\d+)";
Pattern pattern = Pattern.compile(regex);
// 使用Matcher查找并替换连续的空格为单个空格
Matcher matcher = pattern.matcher(expression);
expression = matcher.replaceAll("\\1 \\2\\3\\4\\5");
// 现在我们有正常的数学表达式,可以继续计算
double result = 0;
try {
result = Double.parseDouble(expression.substring(0, expression.indexOf('=')));
if (expression.contains("+")) {
result += Double.parseDouble(expression.substring(expression.indexOf('=') + 1));
} else if (expression.contains("-")) {
result -= Double.parseDouble(expression.substring(expression.indexOf('=') + 1));
} else if (expression.contains("*")) {
result *= Double.parseDouble(expression.substring(expression.indexOf('=') + 1));
} else if (expression.contains("/")) {
result /= Double.parseDouble(expression.substring(expression.indexOf('=') + 1));
}
} catch (NumberFormatException e) {
System.out.println("Invalid input format.");
}
return result;
}
public static void main(String[] args) {
String exampleInput = "3 + 4=7";
double result = calculate(exampleInput);
System.out.println("Result: " + result);
}
}
```
这个Calculator类会忽略输入中的多余空格,然后按照标准的数学运算规则进行计算。如果输入格式不符合预期,比如没有等号或者数字后面跟了非运算符字符,它会捕获异常并提示错误。
阅读全文