Меня просят создать цикл, пока калькулятор работает в двух режимах: Стандартный и Научный, и получает ввод пользователя - PullRequest
0 голосов
/ 08 марта 2019

Попросив пользователя ввести режим и операцию калькулятора.
затем сделать цикл while после получения пользовательского ввода.
Мне нужно выполнить все операции, как только я получу ввод, я не могу получить ввод пользователя ирассчитать код

import java.util.Scanner;

 public class loopsProject {

 public static void main(String[] args) {

 System.out.println("Hello Codiva");



  Scanner scnr = new Scanner(System.in);
  String mode;
  String operator;
  double numOne;
  double numTwo;
  double numThree;
  double numofdValues;
  String result;
  //asking user to enter mode
  System.out.print("Enter the calculator mode: Standard/Scientific?");

  mode = scnr.nextLine();
  while (mode.equals("Standard")) {
      System.out.println("Enter '+' for addition, '-' for subtractions, '*' 
  for multiplication, '/' for division");
      operator = scnr.nextLine();
  }

  while (numOne != 0 && numTwo != 0 && numThree !=0)
    if (operator.equals("+")) {
        System.out.println("How many numbers would you like to add?");
        numofdValues = scnr.nextDouble();
        System.out.println("Enter + numofdValues + numbers");
        numOne = scnr.nextDouble;
        numTwo = scnr.nextDouble;
        numThree = scnr.nextDouble;
        result = numOne + numTwo + numThree;  
        System.out.println("Your added answer is:" + result);
    }
    if (operator.equals("-")) {
       System.out.println("How many numbers would you like to subtract?");
        numofdValues = scnr.nextDouble();
        System.out.println("Enter + numofdValues + numbers");
        num1 = scnr.nextDouble;
        num2 = scnr.nextDouble;
        num3 = scnr.nextDouble;
        result = numOne - numTwo - numThree;   
        System.out.println("Your subtracted answer is:" + result);
  }
    if (operator.equals("*"))
        System.our.println("Your multiplied answer is:" + result);

    if (operator.equals("/"))

    if (operator.equals("invalid")) {
      System.out.println("Your imput is invalid, please try again");
    }

1 Ответ

0 голосов
/ 08 марта 2019

Вы упомянули, что у вас проблемы с

настройкой пользовательского ввода для всей проблемы

Надеюсь, это даст вам структуру для движения вперед.У вас есть два цикла while, но вам нужен один снаружи для управления циклом выбора пользователем режимов или выхода.

public class loopsProject {
    public static void main(String[] args) {
        System.out.println("Hello Codiva");

        //Your variables here

        //asking user to enter mode
        System.out.print("Enter the calculator mode: Standard/Scientific?");

        mode = scnr.nextLine();
        //This loop controls the mode, user will keep on entering or they can quit
        while (!mode.equals("Quit")) {
            if (mode.equals("Standard")) {
                //your Standard logic
            }
            else if (mode.equals("Scientific")) {
                //your Scientific logic
            }
            else {
                //Handle however you want or quit
                break;
            }

            //Ask user for input again
            System.out.print("Enter the calculator mode: Standard/Scientific?");
            mode = scnr.nextLine();
        }
    }
}

, если операция недопустима, повторно выполните повторный запрос пользователя

Для случая, когда операции недопустимы, вы можете просто сказать пользователю, что операция недопустима, и continue пропустить запрос их ввода.Таким образом, он сохраняет режим и перезапустит логику в следующем цикле.Это будет входить в вашу стандартную логику или научную логику, каждый раз, когда вам нужно проверить ввод пользователя.

if (...) { //your checks for user input invalid operation here
    System.out.println("Invalid operation, please retry.");
    continue;
}
...