2012-08-24 74 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());