Switch Statement使第一个案例跳过一行

时间:2011-12-06 23:34:01

标签: java switch-statement

所以我猜这个解决方案会非常简单,但我不知道我在寻找什么,所以我想要一些帮助。当我运行程序并选择案例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 个答案:

答案 0 :(得分:2)

我认为您在致电nextLine()后需要致电nextInt(),因为尚未将扫描仪推进到下一行。

答案 1 :(得分:1)

你的第一个sc.nextInt有一个新行提示,你可以将分隔符更改为\ n或只调用nextLine();刚读完选项后(使用sc.useDelimiter(“\ n”))

答案 2 :(得分:0)

尝试:
    int option=Integer.parseInt(sc.nextLine());
这具有将光标前进到下一行并获得键入数字的效果。