If-else с оператором печати пропускает сканер - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть этот код здесь, но оператор if-else всегда пропускает мой второй сканер. Что я здесь не так делаю? Я получил Login Debit в моей консоли.

public static Scanner keyboard = new Scanner(System.in);
public static void main(String[] args) {
    String returnStatement = "";
    System.out.println("Welcome to Hollow gas station! Please let me know whether you are using a debit card or a credit card:\n"
            + "(1) Debit card \n(2) Credit card\n> ");
    int cardType = keyboard.nextInt();
    System.out.println("Awesome! Please enter your card number here: ");

    String cardNum = keyboard.nextLine();
    keyboard.next();
    if(cardType == 1) {
        returnStatement = String.format("Login\t%s\t%s", "Debit", cardNum);
    }
    else if(cardType == 2) {
        returnStatement = String.format("Login\t%s\t%s", "Credit", cardNum);
    }
    else {
        returnStatement = "Error";
    }
    System.out.println(returnStatement);
}

Ответы [ 3 ]

1 голос
/ 30 апреля 2020

Я прошел через вашу проблему. попробуйте это

public static Scanner keyboard = new Scanner(System.in);
    public static void main(String[] args) {
        String returnStatement = "";
        System.out.println("Welcome to Hollow gas station! Please let me know whether you are using a debit card or a credit card:\n"
                + "(1) Debit card \n(2) Credit card\n> ");
        int cardType = Integer.parseInt(keyboard.nextLine());
        System.out.println("Awesome! Please enter your card number here: ");

        String cardNum = keyboard.nextLine();
        //keyboard.next();
        if(cardType == 1) {
            returnStatement = String.format("Login\t%s\t%s", "Debit", cardNum);
        }
        else if(cardType == 2) {
            returnStatement = String.format("Login\t%s\t%s", "Credit", cardNum);
        }
        else {
            returnStatement = "Error";
        }
        System.out.println(returnStatement);
    }
0 голосов
/ 30 апреля 2020

Проблема в том, что Scanner.nextInt() анализирует ввод до последнего символа числа, а затем останавливается. Добавьте строку

keyboard.nextLine();

, чтобы просто перейти к следующей строке ...

0 голосов
/ 30 апреля 2020

Попробуйте это:

...
String cardNum = keyboard.next(); // Use next()
//keyboard.next(); Remove this line
if(cardType == 1) {
...
...