Если оператор срабатывает, когда условие не выполнено - PullRequest
0 голосов
/ 05 июля 2019

(первый день попытки изучить Java)

У меня есть базовый код, который принимает пользовательский ввод и проверяет, является ли оно целым числом, двойным или строковым (в этом порядке).В настоящее время, если ввод является целым числом или строкой, он работает отлично, но если он является двойным / десятичным, также запускается код для строкового оператора «if».Если я поменяю местами операторы «if» для двойного и целого числа, целое число начинает вызывать строковое выражение вместо двойного.Я попытался поместить строковый оператор в самый верх, чтобы над ним ничего не было, но это просто делает так, чтобы строковый оператор переопределял оператор под ним.

По какой-то причине вместо использования оператора «if» для строки, использование «else» работает (а также удаление оператора все вместе приводит к запуску программы, как и ожидалось), но я хочу понять, почему это такчто произойдет в будущих проектах** редактирование: удаленное закрытие} при удалении комментария

1 Ответ

0 голосов
/ 05 июля 2019

Пара вещей, на которые нужно указать; Во-первых, рекомендуется использовать else if вместо if для нескольких условий. Я думаю, что это более чисто, когда вы смотрите на него или отлаживаете его, поскольку он сообщает программисту, читающему код, что группа операторов 'else if' является взаимоисключающей.

    if (userInput.hasNextInt()) {
        int numberEntered = userInput.nextInt();
        System.out.println("U owe me $" + numberEntered);
    } else if (userInput.hasNextDouble()) {
        double doubleEntered = userInput.nextDouble();
        System.out.println("U owe me $" + doubleEntered);
    } else if (userInput.hasNextLine()) {
        String stringEntered = userInput.nextLine();
        System.out.println("'" + stringEntered + "'" + " ain't a number dummy");
    }

хорошо работает с желаемым результатом. При работе с Scanner имейте ввиду, что:

Метод Scanner.nextInt не читает символ новой строки в вашем ввод создается нажатием «Enter», и поэтому вызов Scanner.nextLine возвращается после прочтения этой новой строки.

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