Как обработать неправильный пользовательский ввод для BigDecimal - PullRequest
0 голосов
/ 14 марта 2020

Я пишу код 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();

Как обрабатывать неправильный пользовательский ввод, например, с помощью int, например, если пользователь вводит -10,00 или если он вводит 10,00 (должно быть 10,00)?

Ответы [ 2 ]

2 голосов
/ 14 марта 2020

Класс Scanner имеет возможность сканировать числа в разных локалях, для этого вы можете использовать методы useLocale () и reset (). Кроме того, вы можете вызвать метод hasNextBigDecimal (), который возвращает true / false.

0 голосов
/ 14 марта 2020

Проверьте ниже код.

  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....*/

        }
    }
...