java - 使用结果的计算器循环
问题描述
我试图只从用户那里获得一个输入,并用之前的结果进行计算。计算器从 开始0
,虽然我知道乘法可能存在一些问题。目前这并不重要。我已经被这个问题困扰了一段时间,我似乎无法找到解决方案。所以这看起来像这样:
0
+ 3 (user input)
3 (result)
- 2 (user input)
1 (result)
代码会这样做几次,但我需要以某种方式循环,直到用户说出类似exit
或e
其他内容为止。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Please enter your calculation");
Scanner scanner = new Scanner(System.in);
System.out.println("0");
//int left = scanner.nextInt();
String op = scanner.next();
int right = scanner.nextInt();
int num3 = compute(0,op,right);
System.out.println(num3);
int rright;
int rrright;
System.out.println("Enter your calculation");
String op1 = scanner.next();
rright = scanner.nextInt();
int num4 = compute(num3,op1,rright);
System.out.println(num4);
System.out.println("Enter your calculation");
String op2 = scanner.next();
rrright = scanner.nextInt();
int num5 = compute(num4,op2,rrright);
System.out.println(num5);
}
private static int compute(int left, String op, int right) {
switch (op.charAt(0)) {
case '+':
return left + right;
case '-':
return left - right;
case '*':
return left * right;
case '/':
return left / right;
}
throw new IllegalArgumentException("Unknown operator:" + op);
}
}
解决方案
一个while
循环应该可以完成这项工作。此外,您应该使用 double 而不是 int,以便正确计算除法的结果(如 Lino 在他的评论中建议的那样)。代码如下所示:
public static void main(String[] args) {
System.out.println("Please enter your calculation");
Scanner scanner = new Scanner(System.in);
System.out.println("0");
double result = 0, right;
String op;
while(true){
System.out.println("Enter your calculation");
op = scanner.next();
if(op.equals("exit")) break;
right = scanner.nextDouble();
result = compute(result, op, right);
System.out.println(result);
}
System.out.println("end of program");
}
private static double compute(double left, String op, double right) {
switch (op.charAt(0)) {
case '+':
return left + right;
case '-':
return left - right;
case '*':
return left * right;
case '/':
return left / right;
}
throw new IllegalArgumentException("Unknown operator:" + op);
}
注意:scanner.nextDouble()
需要以逗号分隔的数字(例如 4,8)。
推荐阅读
- r - 如何创建包含由正则表达式构建的三个部分的列表?
- c++ - 定时器超时后如何在液晶显示屏上显示“事故警报”
- javascript - 从包含 Web 组件的插槽内容中捕获事件
- python-3.x - Python 说数组维度不匹配,但我不明白为什么不匹配
- git - 使用 VS Code 将分支与 Git 合并(不起作用!)
- python - 如何在 OpenMaya.MMeshIntersector.getClosestPoint 中使用 maxDistance 标志
- kotlin - Kotlin:IllegalAccessException:类 BlockJUnit4ClassRunner 无法使用修饰符“private”访问类 Foo 的成员
- sql-server - 基于开始和结束年份的一对多结果集
- c# - 自动从数据库生成实体模型到当前 DbContext 类
- angular - 如何在angular7的后端显示文本框中的值