Problem ze Scannerem

0

Nie rozumiem czemu w case 1 nie czyta mi zmiennej n, tylko od razu przechodzi niżej (czyli wyświetla Podaj imię Podaj nazwisko i zmienną "i" , pomija całkowicie n)

 
public class Praktyka {

    public static void main(String[] args) {

        java.util.Scanner input = new java.util.Scanner(System.in);
        System.out.println("Jeśli chcesz podzielić dwie liczby wybierz 2 \nJeśli chcesz się wpisać wybierz 1");
        Integer e = input.nextInt();
        switch (e) {
                case 1:
                System.out.println("Podaj imię: ");
                String n = input.nextLine();
                System.out.println("Podaj nazwisko: ");
                String i = input.nextLine();
                System.out.println("Witaj " +n +i);
                break;

            case 2:
                System.out.println("Podaj a");
                Integer a = input.nextInt();
                System.out.println("Podaj b");
                Integer b = input.nextInt();
                System.out.println("Wynik dzielenia a/b to:");
                double c = (double) a / b;
                System.out.println(c);
                break;

        }

    }
}
1

Zrób tak

Integer e = input.nextInt();
input.nextLine();
switch(e) ...

Zadziała

0

gitara działa, możesz mi wytłumaczyć dlaczego tak musi być? przy integer nie trzeba tak robić, tylko przy stringu takie rzeczy się dzieją

1

Zerknij tutaj.
Chodzi głównie o to, że nextInt nie pobiera znaku nowej linii. Trzeba to zrobić manualnie korzystając z nextLine.

1 użytkowników online, w tym zalogowanych: 0, gości: 1