Цикл для калькулятора с использованием результата - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь получить только один ввод от пользователя и выполнить расчет с предыдущим результатом.Калькулятор начинается с 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);
    }
}

1 Ответ

0 голосов
/ 27 февраля 2019
Цикл

A while должен выполнить эту работу.Также вы должны использовать double вместо int, чтобы результат деления вычислялся правильно (как предложил Лино в своем комментарии).Код будет выглядеть так:

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

...