Switch Statement заставляет первый случай пропустить строку - PullRequest
0 голосов
/ 07 декабря 2011

Итак, я предполагаю, что решение будет очень простым, но я понятия не имею, что я ищу, поэтому мне нужна помощь.Что происходит, когда я запускаю программу и выбираю случай 1. Она печатает и «имя собаки», и «гонку собак», не давая мне возможности ввести имя собаки.Поэтому, когда я выбираю случай 1, я начинаю только с того, что участвую в гонке собак, какой она тяжелая и сколько ей лет!вот код, который я использую ...

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);

Ответы [ 3 ]

2 голосов
/ 07 декабря 2011

Полагаю, вам нужно позвонить nextLine() после вашего звонка на nextInt(), потому что это еще не перевело сканер на следующую строку.

1 голос
/ 07 декабря 2011

Есть напоминание новой строки из вашего первого sc.nextInt, вы можете изменить разделитель на \ n или просто вызвать nextLine ();сразу после прочтения параметра (с помощью sc.useDelimiter ("\ n"))

0 голосов
/ 07 декабря 2011

Попробуйте:
int option=Integer.parseInt(sc.nextLine());
Это имеет эффект как перемещения курсора на следующую строку, так и получения набранного номера.

...