Java 如何处理BigDecimal的错误用户输入
我正在写JAVA代码,用户输入是BigDecimal。之前,我编写了do while check for integer输入,如下所示:Java 如何处理BigDecimal的错误用户输入,java,java.util.scanner,Java,Java.util.scanner,我正在写JAVA代码,用户输入是BigDecimal。之前,我编写了do while check for integer输入,如下所示: int number= 0; do { System.out.print("Enter number: "); number= scan.nextInt(); } while (number< 0); 如何处理错误的用户输入,如int,例如,
int number= 0;
do {
System.out.print("Enter number: ");
number= scan.nextInt();
}
while (number< 0);
如何处理错误的用户输入,如int,例如,如果用户输入-10,00或如果他输入10.00(应该是10,00)?Scanner类具有扫描不同语言环境中的数字的功能,为此,您可以使用useLocale()和reset()方法。此外,还可以调用hasNextBigDecimal()方法,该方法返回true/false。
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
系统输出打印项次(“输入价格”);
BigDecimal price=scan.nextBigDecimal();
if(price.compareTo(BigDecimal.ZERO)>0){
System.out.println(“价格大于0(正)”);
/*写下你的商业逻辑*/
}else if(price.compareTo(BigDecimal.ZERO)<0){
System.out.println(“价格小于0(负)”);
/*此行将负价格转换为正价格*/
price=price.multiply(新的大十进制(“-1”);
/*写下你的商业逻辑*/
}
}
首先了解如何向程序报告错误(文档是一个很好的来源)。其次,用你喜欢的方式处理错误。。过来看;这将是你的朋友。你将如何准确地包装价格?是否在输入时再次返回用户,并向其提供有关not vaid Entry的消息,以便其再次输入?我用谷歌搜索了一下,但我不清楚:(您将如何包装然后BigDecimal扫描输入的价格?返回用户输入,并提供有关not vaid Entry的消息,让他再次输入?我添加了新的答案和解释以及代码。希望这有助于解决您的问题。非常感谢,我正在考虑处理它,更像是返回用户在上一步,如果他输入错误,可能要用hasNextBigDecimal()方法检查它,只是我不确定如何实现它…我尝试过,但我认为我创建了无限循环:/
BigDecimal price = scan.nextBigDecimal();
scan.nextLine();
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....*/
}
}