Проблема в создании калькулятора, распознающего запрос пользователя

Буквально неделю изучаю java и столкнулся с проблемой в заголовке.

Я сделал калькулятор, распознающий запросы пользователя из массива строки (код ниже).

Сама проблема заключается в том, что я не понимаю, как сделать так, чтобы математическое действие можно было продолжить с результатом, полученным после первого действия.
Например 35+35 = 70, но вместо +70 = 140 нужно писать заново 70+70.

Пытался сделать res = operator[0], но выдает ошибку.

Заранее спасибо за помощь.

П.С. Цикл do-while стоит для того, чтобы программа не завершалась автоматически после первого вычисления.

package com.lumen;

import java.util.Scanner;

public class OneLineCalc {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        double res = 0;
        do {
            String numbers = scan.nextLine();
            String[] operators;

            if (numbers.indexOf('+') > 0) {
                operators = numbers.split("[+]");
                res = Double.parseDouble(operators[0]) + Double.parseDouble(operators[1]);
            } else if (numbers.indexOf('-') > 0) {
                operators = numbers.split("[-]");
                res = Double.parseDouble(operators[0]) - Double.parseDouble(operators[1]);
            } else if (numbers.indexOf('*') > 0) {
                operators = numbers.split("[*]");
                res = Double.parseDouble(operators[0]) * Double.parseDouble(operators[1]);
            } else if (numbers.indexOf('/') > 0) {
                operators = numbers.split("[/]");
                res = Double.parseDouble(operators[0]) / Double.parseDouble(operators[1]);
            }
            System.out.print(" = " + res);
        } while (res < 1000000000);
    }
}

Ответы (2 шт):

Автор решения: ksa

Например 35+35 = 70, но вместо +70 = 140 нужно писать заново 70+70

Такое нужно?

public class Test {
    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);
        double res = 0;
        do {
            String numbers = scan.nextLine();
            String[] operators;
            if (numbers.indexOf('+') > -1) {
                operators = numbers.split("[+]");
                if (operators[0].isEmpty()) operators[0] = operators[1];
                res = Double.parseDouble(operators[0]) + Double.parseDouble(operators[1]);
            } else if (numbers.indexOf('-') > 0) {
                operators = numbers.split("[-]");
                res = Double.parseDouble(operators[0]) - Double.parseDouble(operators[1]);
            } else if (numbers.indexOf('*') > -1) {
                operators = numbers.split("[*]");
                if (operators[0].isEmpty()) operators[0] = operators[1];
                res = Double.parseDouble(operators[0]) * Double.parseDouble(operators[1]);
            } else if (numbers.indexOf('/') > 0) {
                operators = numbers.split("[/]");
                res = Double.parseDouble(operators[0]) / Double.parseDouble(operators[1]);
            } else {
                System.out.println("Операция не определена...");    
                continue;
            }
            System.out.print(" = " + res + "\n");
        } while (res < 1000000000);
    }
}
→ Ссылка
Автор решения: Nowhere Man

Если требуется реализовать простой калькулятор, обрабатывающий операции последовательно (независимо от математического приоритета операций в выражении), как стандартный калькулятор Windows: 2 + 2 -> 4 * 2 = 8, то проще было бы не ожидать ввода целой строки и разбивать её по знаку операции.

Можно изменить логику следующим образом:

  1. Ввести первое число (nextDouble) -- оно может быть и отрицательным
  2. Ввести операцию +-*/, если введено =, закончить цикл
  3. Уже в цикле ввести следующий операнд (nextDouble), вычислить и вывести результат операции с новой строки (можно будет использовать более лаконичный switch по виду операции).
  4. Перейти в начало цикла на п.2.
Scanner scan = new Scanner(System.in);
double x = scan.nextDouble();
String op;

while (!"=".equals(op = scan.next())) {
    switch (op) {
        case "+" -> x += scan.nextDouble();
        case "-" -> x -= scan.nextDouble();
        case "*" -> x *= scan.nextDouble();
        case "/" -> x /= scan.nextDouble();
        default -> {
            System.out.println("Неизвестная операция '" + op + "'");
        }
    }
    System.out.println(" = " + x);
}

Правда, при таком способе операции должны отделяться пробельными символами и сохраняется возможность отдельного ввода отрицательных чисел:

2 + 3  = 5.0
+ 5  = 10.0
- -2  = 12.0
* -1  = -12.0
/ -2  = 6.0
+ 15  = 21.0
=
→ Ссылка