如何处理BigDecimal的错误用户输入

问题描述 投票:-2回答:3

我正在编写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这样的错误用户输入?

java java.util.scanner
3个回答
2
投票

Scanner类具有扫描不同语言环境中的数字的功能,为此,您可以使用useLocale()和reset()方法。另外,您可以调用hasNextBigDecimal()方法,该方法返回true / false。


0
投票

在BigDecimal中未定义,因此您必须使用compareTo()方法。compareTo()的返回值为0,-1和1。

Returns: -101,因为此BigDecimal在数值上小于,等于或大于val。


0
投票

查看下面的代码。

  1. 首先,将价格作为输入并转换为BigDecimal
  2. 然后使用compareTo()方法比较转换后的价格以检查价格是正还是负
  3. 如果价格为正,则保留价格,否则将其转换为负。
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....*/

        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.