我正在编写JAVA代码,并且我的用户输入是BigDecimal。以前,我在检查像这样的整数输入时写了do:
int number= 0;
do {
System.out.print("Enter number: ");
number= scan.nextInt();
}
while (number< 0);
现在我有了BigDecimal用户输入
BigDecimal price = scan.nextBigDecimal();
scan.nextLine();
例如,如果用户输入-10,00或如果他输入10.00(应该为10,00,该如何处理int这样的错误用户输入?
Scanner类具有扫描不同语言环境中的数字的功能,为此,您可以使用useLocale()和reset()方法。另外,您可以调用hasNextBigDecimal()方法,该方法返回true / false。
在BigDecimal中未定义,因此您必须使用compareTo()方法。compareTo()的返回值为0,-1和1。
Returns: -1,0或1,因为此BigDecimal在数值上小于,等于或大于val。
查看下面的代码。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter price");
BigDecimal price = scan.nextBigDecimal();
if (price.compareTo(BigDecimal.ZERO) > 0) {
System.out.println("Price is greater than 0(positive)");
/*....Write your business logic....*/
} else if (price.compareTo(BigDecimal.ZERO) < 0) {
System.out.println("Price is less than 0(negative)");
/* This line converts negative price to positive */
price = price.multiply(new BigDecimal("-1"));
/*....Write your business logic....*/
}
}