Запрещение программе вводить число меньше 1 (если еще / переключатель) - PullRequest
0 голосов
/ 31 октября 2018

Итак, я пишу программу, которая сравнивает объемы ящиков ... но мне нужно, чтобы она работала так, чтобы значения, меньшие единицы, не печатались и вызывали сообщение об ошибке. (т. е. «Первое поле в 0,5 раза больше размера второго» или «Первое поле в 0 раз больше размера второго поля»). Вместо этого я хотел бы напечатать «Ошибка. чем 1 "

Вот часть моего кода, которую я пытаюсь исправить:

if (volume1 == volume2) {
        System.out.println("The first box is the same size as the second box");
    }else if(volume1 >= 0 || volume2 >= 0){
        System.out.println("Error. Please enter a valid number greater than 0");
    }else {
        String bigger = "first box";
        String smaller = "second box";
        double ratio = volume1 / volume2;
        if (volume2 > volume1) {
            bigger = "second box";
            smaller = "first box";
            ratio = volume2 / volume1;
        }
        String compare;
        switch((int) ratio) {
        case 1: compare = " is slightly bigger than "; 
        break;
        case 2: compare = " is twice the size of "; 
        break;
        case 3: compare = " is triple the size of ";
        break;
        case 4: compare = " is quadruple the size of "; 
        break;
        default: compare = " is " + (int) ratio + " times the size of ";
        break;
        }

        System.out.println("The " + bigger + compare + smaller);
    }

Надеюсь, этого кода достаточно, чтобы объяснить мою проблему. Из того, что я узнал, я не думаю, что операторы switch могут иметь условия, и из-за того, как структурировано отношение int, он продолжает печатать 0, когда я тестирую его. Любой совет?

1 Ответ

0 голосов
/ 31 октября 2018

Хорошо, надеюсь, я правильно понял ваш вопрос :) Ну, вы можете просто добавить оператор if в default-branch:

// Here the Code till default
default:
    if (ratio < 1) {
        System.err.println("Error: Please enter a valid number greater than 1");
        return; // You should consider to return out of the method here otherwise "The" still gets printed for no reason :)
    } else compare = " is " + (int) ratio + " times the size of ";
}
// Rest of Code

Это должно сделать работу:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...