【问题标题】:A loop for calculator using the result使用结果的计算器循环
【发布时间】:2019-02-27 12:43:56
【问题描述】:

我试图只从用户那里获得一个输入,并使用之前的结果进行计算。计算器从0 开始,虽然我知道乘法可能存在一些问题。目前这并不重要。我已经被这个问题困扰了一段时间,我似乎无法找到解决方案。所以这看起来像这样:

0
+ 3 (user input)
3 (result)
- 2 (user input)
1 (result)

代码会执行几次,但我需要一个循环,以便它执行此操作,直到用户说出 exite 或其他内容。

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);
    }
}

【问题讨论】:

  • 1) 如果用户输入特定关键字,则使用while(true) 循环,然后使用break 循环。 2) 看看this question,java 中的整数除法不会像你期望的那样工作

标签: java loops calculator


【解决方案1】:

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)。

【讨论】:

  • 注意:scanner.nextDouble() 需要逗号分隔的数字(例如 4,8)。 - 这取决于语言环境。
猜你喜欢
  • 1970-01-01
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多