2011-12-06 74 views
0

所以我猜這個解決方案會非常簡單,但我不知道我在找什麼,所以我想要一些幫助。發生什麼事是,當我運行程序,並選擇案例1.它打印「狗的名字」和「狗比賽」沒有給我一個機會來填寫狗的名字。所以當我選擇第一種情況時,我只能開始填補賽狗的種族,有多重,多大的年齡!這裏是我使用的代碼...Switch Statement正在使第一個案例跳過一行

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

[nextnent後使用nextLine時出現掃描程序問題]的可能重複(http://stackoverflow.com/questions/7056749/scanner-issue-when-using-nextline-after-nextint) –

回答

2

我相信你需要您的來電nextInt()後打電話到nextLine(),因爲沒有先進的掃描儀到下一行呢。

1

從您的第一個sc.nextInt有一個換行符提醒,您可以將分隔符更改爲\ n或直接調用nextLine();剛剛看完選項後(使用sc.useDelimiter(「\ n」))

0

嘗試:
int option=Integer.parseInt(sc.nextLine());
這有推進光標移動到下一行,並獲得輸入一批既有的效果。