java
时间: 2023-10-11 08:22:41 浏览: 56
好的,以下是使用 Java 实现一个简单的计算器的示例代码,支持加、减、乘、除、阶乘、正弦、余弦和指数运算:
```java
import java.util.Scanner;
import java.lang.Math;
public class Calculator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
// 获取用户输入的表达式
System.out.print("请输入表达式(输入 q 退出):");
String expression = sc.nextLine();
// 如果用户输入 q,则退出循环
if (expression.equals("q")) {
break;
}
try {
// 尝试计算表达式
double result = evaluateExpression(expression);
// 输出计算结果
System.out.println("计算结果为:" + result);
} catch (Exception e) {
// 如果计算失败,则输出错误信息
System.out.println("输入表达式有误,请重新输入!");
}
}
sc.close();
}
// 计算表达式的值
public static double evaluateExpression(String expression) throws Exception {
String[] tokens = expression.split(" ");
// 如果表达式只有一个数字,则直接返回该数字
if (tokens.length == 1) {
return Double.parseDouble(tokens[0]);
}
// 使用栈来实现表达式求值
Stack<Double> stack = new Stack<>();
for (String token : tokens) {
if (token.equals("+")) {
double operand2 = stack.pop();
double operand1 = stack.pop();
stack.push(operand1 + operand2);
} else if (token.equals("-")) {
double operand2 = stack.pop();
double operand1 = stack.pop();
stack.push(operand1 - operand2);
} else if (token.equals("*")) {
double operand2 = stack.pop();
double operand1 = stack.pop();
stack.push(operand1 * operand2);
} else if (token.equals("/")) {
double operand2 = stack.pop();
double operand1 = stack.pop();
stack.push(operand1 / operand2);
} else if (token.equals("sin")) {
double operand = stack.pop();
stack.push(Math.sin(operand));
} else if (token.equals("cos")) {
double operand = stack.pop();
stack.push(Math.cos(operand));
} else if (token.equals("exp")) {
double operand = stack.pop();
stack.push(Math.exp(operand));
} else if (token.equals("!")) {
double operand = stack.pop();
int n = (int)operand;
double result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
stack.push(result);
} else {
stack.push(Double.parseDouble(token));
}
}
return stack.pop();
}
}
```
在上面的代码中,我们使用了 Java 的 `Scanner` 类来获取用户输入的表达式,并使用了 Java 的 `Stack` 类来实现表达式求值。同时,我们还使用了 Java 的 `Math` 类来实现阶乘、正弦、余弦和指数运算等功能。
你可以根据自己的需要,使用不同的编程语言和工具来实现一个计算器,实现基本数学运算、函数等功能。
相关推荐
![avi](https://img-home.csdnimg.cn/images/20210720083319.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)