2012-08-24 93 views
0

在我的測試儀文件中,我試圖從用戶接收3個輸入,但只有2個輸入被接收,看起來程序正在跳過輸入。 nextLine()行代碼。這裏是我的代碼:運行時錯誤 - 跳過一行用戶輸入(掃描儀)

import java.util.Scanner; 

public class IngredientTester 
{ 
    public static void main(String[] args) { 

     Scanner in = new Scanner(System.in); 
     /*These 3 inputs work */ 
     System.out.println("Please enter Ingredient name."); 
     String inputName = in.nextLine(); 
     System.out.println("Please enter Ingredient measurement type."); 
     String inputType = in.nextLine(); 
     System.out.println("Please enter Ingredient amount"); 
     double inputAmount = in.nextDouble(); 

     Ingredient inputIngredient = new Ingredient(inputName,inputType,inputAmount); 
     System.out.println(inputIngredient.getName() + "- " + inputIngredient.getAmount() + " " + inputIngredient.getMeasurement()); 

     System.out.println("Please enter Ingredient name."); 
     inputName = in.nextLine(); 
       /*^the input above does not work, but the ones below do work */ 
     System.out.println("Please enter Ingredient measurement type."); 
     inputType = in.nextLine(); 
     System.out.println("Please enter Ingredient amount"); 
     inputAmount = in.nextDouble(); 

     inputIngredient.setAmount(inputAmount); 
     inputIngredient.setName(inputName); 
     inputIngredient.setMeasurement(inputType); 
     System.out.println(inputIngredient.getName() + "- " + inputIngredient.getAmount() + " " + inputIngredient.getMeasurement()); 
    } 

} 

回答

1

的問題是,你正在使用:

double inputAmount = in.nextDouble(); 

不僅讀你的第一個輸入量,但通過回車到下一個readLine聲明。

的解決方案是消耗回車第一:

double inputAmount = Double.parseDouble(in.nextLine());