Почему мое предложение сравнения всегда вызывает исключение IllegalArgumentException? - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь создать метод калькулятора и хочу использовать математические символы в своем выражении case, но моя проверка ошибок продолжает выдавать ошибку.

Я попытался переместить мои операторы ELSE в нижнюю часть на случай, если это было проблемой с определением последовательности. Когда я добавляю переменную в конец моего сообщения об ошибке, появляется возможность назначить ее правильно.

общедоступный калькулятор статических пустот (double firstNumber, операция char, double secondNumber) {

    if (operation != '+' || operation != '-' || operation != '*' || operation != '/' || operation !='%'){
        throw new IllegalArgumentException("You must choose a number between 1 and 5 inclusive." + operation);
    }else{
        if(operation == '/' && secondNumber == 0){
            throw new IllegalArgumentException("Dividend cannot be zero.");
        }else{if(operation == '%' && secondNumber == 0){
                throw new IllegalArgumentException("Dividend cannot be zero.");
            }else

                switch (operation){
                    case '+': System.out.println("1");
                    break;

                    case '-': System.out.println("2");
                    break;

                    case '*': System.out.println("3");
                    break;

....

Пример ошибок с использованием +,% и /:

> java.lang.IllegalArgumentException: You must choose a number between 1
> and 5 inclusive.+     at MathUtilites.calculator(MathUtilites.java:39)
> java.lang.IllegalArgumentException: You must choose a number between 1
> and 5 inclusive.%     at MathUtilites.calculator(MathUtilites.java:39)
> java.lang.IllegalArgumentException: You must choose a number between 1
> and 5 inclusive./     at MathUtilites.calculator(MathUtilites.java:39)

Я ожидаю, что он просто вернет число от 1 до 5, которое я позже заменю реальным кодом.

Ответы [ 2 ]

0 голосов
/ 30 мая 2019
if (operation != '+' || operation != '-' || operation != '*' || operation != '/' || operation !='%'){
    throw new IllegalArgumentException("You must choose a number between 1 and 5 inclusive." + operation);

должно быть

if (operation != '+' && operation != '-' && operation != '*' && operation != '/' && operation !='%'){
        throw new IllegalArgumentException("You must choose a number between 1 and 5 inclusive." + operation);
    }

Вы должны найти булеву алгебру, связанную с операторами OR и AND.

0 голосов
/ 30 мая 2019

Как и в первом предложенном комментарии к вашему вопросу, вам нужно заменить || на &&, который скажет , все они должны быть истинными вместо того, чтобы говорить , любой из них должен быть истинным . Измените код так, чтобы он выглядел следующим образом:

if (operation != '+' && operation != '-' && operation != '*' && operation != '/' && operation !='%'){
    throw new IllegalArgumentException("You must choose a number between 1 and 5 inclusive." + operation);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...