Есть ли способ для меня, чтобы повторно ввести неправильный ввод? - PullRequest
0 голосов
/ 16 июня 2019

Я делаю основной калькулятор, где он выполняет сложение, умножение и т. Д. Сначала он проверяет тип операции, например, 1 для сложения, 2 для умножения и так далее.Если он обнаруживает, что ввод операции недопустим, он просто сообщает мне в консоли об ошибке.Есть ли какой-нибудь метод, который я могу использовать, чтобы обнаружить метод, а затем снова ввести его?

public void printCheck() throws ArithmeticException{

        if (op == 2) {
            System.out.println("You have chosen addition");
        }

        else if (op == 3) {
            System.out.println("You have chosen subtraction");
        }

        else if (op == 4) {
            System.out.println("You have chosen multiplication");
        }

        else if (op == 5) {
            System.out.println("You have chosen division");
        }

        else {
            throw new ArithmeticException("Entered an invalid operation"); 
        }

            try {
                a.op(0);
            }

            catch(ArithmeticException e){
                System.out.println("You have entered an invalid operation");
            }

Ответы [ 2 ]

2 голосов
/ 16 июня 2019

Вы можете повторять ввод кода операции, пока он не станет действительным.

Я не рекомендую использовать исключения здесь, потому что это распространенный и хорошо известный случай, когда пользователь вводит недопустимый ввод.Вместо этого вы должны создать простой метод isValidOperationCode, который проверяет ввод.Для улучшения читаемости я удалил глобальную переменную op и превратил ее в локальную переменную, которая передается в качестве параметра в методы, которые в ней нуждаются.

Пример:

int op;
do {
    op = askUserForOperation();
    printCheckOperation(op);
} while (!isValidOperationCode(op));

смодифицированный printCheckOperation метод

    ...
} else if (op == 5) {
    System.out.println("You have chosen division");
} else {
    System.out.println("Entered an invalid operation"); 
}

и новый метод

private boolean isValidOperationCode(int op) {
    return 2 <= op && op <= 5;
}
0 голосов
/ 16 июня 2019

Извините, я не мог быть более сложным, так как я использую мобильный телефон, чтобы ответить на этот вопрос. Надеюсь, этот ответ поможет.

  public void printCheck(){
    while(true){
     if(op<2 || op>5){
           enterNewOp();
     }
     else {
            switch(op) {
                  case 2:
                  System.out.println("You have select addition");
                  case 3:
                  System...
                  case 4:
                   ......
            }
     break;
     }
    }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...