使用扫描仪JAVA在do-while中跳过输入

时间:2013-12-04 01:36:35

标签: java loops java.util.scanner do-while

我正在使用do-while循环,它根据用户的输入循环为“Y”或“N”。如果用户选择继续按'Y'或1(为简单起见),则在第二次迭代时它会跳过同一循环中的第一个输入。

do{
       System.out.println("Enter the location: ");
       cartItem.purchaseLocation = input.nextLine();  // This input is skipped on second iteration

       System.out.println("Enter the product description: ");
       cartItem.productDescription = input.nextLine();

       System.out.println("Enter the price of the item: ");
       cartItem.productPrice = input.nextDouble();

       System.out.println("Enter the quantity: ");
       cartItem.quantity = input.nextInt();


       cartList.add(cartItem);

       System.out.println("Do you want to add more items ? y = 1 / n = 0: ");
       exitVar = input.nextInt();

   }while(exitVar!=0);            // Repeat till no more items need to be added in the cart

因此,当用户按下输入0重复该过程时,该行

  

cartItem.purchaseLocation = input.nextLine();

这是循环中的第一个输入将被跳过。有什么建议可能是错的吗?

2 个答案:

答案 0 :(得分:1)

Skipping nextLine() after use nextInt()相同的问题

input.nextInt()不读取一行,当输入为“1 \ n”时,它读为“1”并将“\ n”留给下一次读取,即

cartItem.purchaseLocation = input.nextLine();

答案 1 :(得分:-1)

假设input.nextLine()input.next()对象,而不是input使用Scanner

如果不是,请澄清input是什么。