Switch Statement zorgt ervoor dat de eerste case een regel overslaat

Dus ik vermoed dat de oplossing hiervoor heel simpel zal zijn, maar ik heb geen idee waar ik naar op zoek ben, dus ik zou graag wat hulp willen. Wat er gebeurt, is dat wanneer ik het programma uitvoer en case 1 kies. Het drukt zowel "hondennaam" als "hondenrace" af zonder me de kans te geven de naam van de hond in te vullen. Dus als ik voor zaak 1 kies, begin ik alleen met het invullen van de hondenrace, hoe zwaar en hoe oud het is! hier is de code die ik gebruik ...

do {
        System.out.println("(1 - reg\n2 - tail\n3- delete\n4-exit\nEnter number: ");

       //so this is where the switch stuff starts
        int option=sc.nextInt();
        switch (option) {



        case 1: System.out.println("Dog's Name: ");
            String na=sc.nextLine();

            System.out.println("Dog Race: ");
            String ra=sc.nextLine();

            System.out.println("How heavy?");
            double wey=sc.nextDouble();

            System.out.println("How old?");
            double ag=sc.nextDouble();

            dog doggy= new dog(na, ra, wey, ag);
            kennel.add(doggy);
            break;

        case 2: System.out.println("its a tail");
            break;

        case 3: System.out.println("you delete");
            break;

        case 4: System.out.println("QUITTING\n(Data was not saved srry.)");
            play = false;


        default: System.out.println("try again");
            }
        }while(play);
0
toegevoegd de auteur Paul Bellora, de bron

3 antwoord

Ik geloof dat je nextLine() moet aanroepen na je aanroep naar nextInt() , want dat heeft de scanner nog niet naar de volgende regel gebracht.

2
toegevoegd

Er is een nieuwe regelherinnering van je eerste sc.nextInt, je kunt het scheidingsteken veranderen in \ n of gewoon nextLine() aanroepen; net na het lezen van de optie (Using sc.useDelimiter ("\ n"))

1
toegevoegd

Probeer:
     int option = Integer.parseInt (sc.nextLine ());
Dit heeft zowel het effect van het verplaatsen van de cursor naar de volgende regel als het verkrijgen van het getypte nummer.

0
toegevoegd