2015-11-02 118 views
0

這是我的代碼。它是一個簡單的控制檯應用程序,旨在讓我熟悉對象的使用。 `包okei; import java.util.Scanner;while循環執行兩行代碼

公共類主要 {

public static void main(String[] args) 
{ 
    Scanner listen = new Scanner(System.in); 

    Arg dec = new Arg(); 
    String answer = ""; 
    int howmuch; 
    Boolean a = true; 
    while(a) 
    { 

     System.out.println("Drink, Fill, or Look?"); 
     answer = listen.nextLine(); 

     switch (answer) 
     { 
     case "Drink": 
      System.out.println("How much?"); 
      howmuch = listen.nextInt(); 
      dec.drink(howmuch); 
      break; 
     case "Fill": 
      System.out.println("How much?"); 
      howmuch = listen.nextInt(); 
      dec.fill(howmuch); 
      break; 
     case "Look": 
      System.out.println(dec.look()); 
      break; 
     case "Quit": 
      listen.close(); 
      a=false; 
      break; 
     } 

    } 

} 

} `

這裏是ouptut 飲料,填充,或看? 飲料 多少錢? 飲料,填充或外觀? 飲料,填充,還是看?

爲什麼飲料,填充或查看被執行兩次?

回答

0

只是將「answer = listen.nextLine()」更改爲「answer = listen.next()」

+0

非常感謝您......但這是如何工作的? – CLASSIFIED

+0

它不會執行兩次,它只是在您每次使用Scanner#nextInt之前跳過Scanner#nextLine,這是因爲Scanner#nextInt方法不會消耗您輸入的最後一個換行符,因此該換行符在接下來撥打Scanner#nextLine。這裏是[答案鏈接](http://stackoverflow.com/questions/13102045/skipping-nextline-after-using-next-nextint-or-other-nextfoo-methods) –