как проверить, если вход от пользователя 1 целое число - PullRequest
0 голосов
/ 27 января 2019

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

Это мой код:

System.out.println("MENU:What do you want to do ? \n1.Buy a new ticket!\n2.Renewal of a ticket\n3.Update the content");
            System.out.println("Type the number of what you want to do ");

            if (!(input.hasNextInt() && input.hasNextByte())) {   // if the input is not an integer and more than one byte 
                System.out.println("ERROR!!Enter an integer value ");
                input.next();
            } else {

                int Read = input.nextInt(); //reads what the user has typed/given
 System.out.println("You entered an integer value! ");
            }

Я пробовал это, и он показывает ошибку (в каком меню это работает) для входных данных, подобных этим: 34443 22123 cdsfr4d, но когда я даю только 2 или 3 целых числа, таких как: 34 или 567, он не показывает мне никакой ошибки!чтобы показать мне правильное сообщение

Ответы [ 3 ]

0 голосов
/ 27 января 2019

Я предполагаю, что вы хотите, чтобы пользователь только вводил: 1, 2 или 3, поскольку это то, что я вижу в вашем Консольном меню.

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

if (!(input.hasNextInt()) {   // if the input is not an integer and more than one 
    System.out.println("ERROR!!Enter an integer value ");
    input.next();
} else {

    int choice = input.nextInt();

    switch (choice) {
        case 1: //If choice is 1

        case 2: // If choice is 2

        case 3: // If choice is 3

        default: // If choice is any other integer
    }

}

Операторы Switch обычно не используются в Java, так как обычно есть более эффективные способы обработки этих сценариев. Вот еще немного информации о выражениях switch: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

Добро пожаловать в сообщество Stack Overflow, убедитесь, что вы используете Google, прежде чем использовать Stack!

0 голосов
/ 27 января 2019

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

public class Tests1 {
public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter the number");
    int number = sc.nextInt();
    Tests1 obj1=new Tests1();
    System.out.println(obj1.digit(number));
}
    public boolean digit(int num) {
        int count = 0;
        while (num != 0) {
            num = num / 10;
            count++;
        }
        if (count == 1) {
            return true;
        }
        return false;
    }
} 

Мой код проверяет, что число однозначное или нет.Если это однозначное число, оно возвращает true, иначе возвращает false.

0 голосов
/ 27 января 2019

Удалить && input.hasNextByte()

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