JAVAutil。扫描器Java扫描器对象跳过行?
我已经有一段时间没有真正为java编写任何基于控制台的东西了
我有这个方法,下面,它应该问我每一行,对吗?相反,我得到一个提示,然后是三个。。我在这里做错了什么
try {
System.out.println("Please enter the product's LONG details: ");
product.setLongDetails(sc.next()); //set products long details
System.out.println("Please enter the product's SHORT details: ");
product.setShortDetails(sc.next()); //set short details
System.out.println("Please enter the product's UPC data: ");
product.setUpc(sc.next()); //set upc
System.out.println("Please enter the product's stock: ");
product.setStock(sc.nextInt());
System.out.println("Please enter the products price. ");
System.out.println("This MUST be entered with no dollar sign.");
product.setPrice(sc.nextBigDecimal());
InventoryManager.addProduct(product); //add product to database
}
我的控制台输出如下:
Please enter the product's LONG details:
Fireplace Cleaning Package
Please enter the product's SHORT details:
Please enter the product's UPC data:
Please enter the product's stock:
BUILD STOPPED (total time: 3 minutes 5 seconds)
扫描程序在类声明中初始化为:
public static Scanner sc = new Scanner(System.in); //class level scanner object for reuse.
如果在每个对象集方法之间调用sc.nextLine(),它会正确提示,但获取错误信息:
Please enter the product's SHORT details:
Fire Poker
将对象显示为:
请输入您的选择:
Fire
# 1 楼答案
报告指出:
这意味着,当您输入带有空格的文本(如示例中的“壁炉清理包”)时,它会被拆分为3个不同的输入,每个输入通过一个
sc.next()
调用返回解决方案是将delimeter模式调整为换行:
# 2 楼答案
扫描仪。next()获取下一个完整的标记,后跟一个分隔符,如doumentation中所述。因为您键入了三个单词(这里的分隔符是空格),所以前三个单词
sc.next()
我会读每一个单词。我想你要找的是
sc.nextLine()