Проверка ввода для двоичного в десятичное преобразование - PullRequest
0 голосов
/ 27 сентября 2019

Я должен создать двоичный преобразователь в десятичное число для назначения.Есть ограничения на это назначение.Это: 1.Нет бесконечных циклов 2.Представления Break для выхода из цикла 3.Нет меток или операторов перехода 4.Не используя Integer.parseInt (String s, int radix)

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

Я пытался заменить цикл for на while и doВ то время как петли, но это оказалось слишком запутанным для меня.

Я также пытался вложить оператор if в цикл for, но не смог понять, как реализовать userInput, чтобы пользователь продолжал вводить данные после появления сообщения об ошибке.

long binaryNumber = 0, baseTen = 0;     
String userInput;                       
int i;  
boolean okay;

//Asks user to input binary number
        System.out.println("Enter a binary number.");
        userInput = in.nextLine();

            for (i = 0; i <= userInput.length() - 1; i++) {
                char digit = userInput.charAt(i);

                //Checks if characters other than 1 or 0 is present
                if ((digit != '1') || (digit != '0') {
                    System.err.println("Try again");
                    okay = false;
                }
                //Converts binary to decimal
                if (digit == '1') {
                    binaryNumber += Math.pow(2, (userInput.length() - i)) / 2;
                    okay = true;
                } else if (digit == '0') {
                binaryNumber += 0;
                    okay = true;
                }

1 Ответ

0 голосов
/ 27 сентября 2019

Если вы используете другой оператор else, вы можете установить для okay значение false и проверить значение okay после цикла for и всю процедуру снова после вывода ошибкисообщение.Конечно, после установки okay в значение false вы можете прервать и прекратить синтаксический анализ ввода.

Вы также можете вызвать исключение вместо установки okay в значение false и прерывание, перехватить исключение и затем перезапустить процедуру.из метода более высокого уровня.Однако пользователь, вводящий неверные данные, вероятно, не считается исключительным;вы всегда должны ожидать ошибочный ввод.

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