Java Scanner nextBigDecimal выдает исключение InputMismatchExceptionJAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Java Scanner nextBigDecimal выдает исключение InputMismatchException

Сообщение Гость »


Я написал простой код Java для приема входных данных с консоли (с использованием Eclipse 2016 IDE), чтобы облегчить перебор текстового файла и вывод файла в структуре операторов SWIFT MT940. Для открытия баланса выписок я использовал метод nextBigDecimal() класса сканера, который раньше работал нормально. Недавно я обновился до версии Eclipse 2023-12 и использую Azul Zulu JRE 1.8, если что-то из этого имеет значение.
Недавно мне пришлось смахнуть пыль со своей программы и отметить, когда я ввожу не десятичное значение (0, 9, 100 и т. д.) работает нормально, но если я ввожу десятичное число (0,00, 99,01 и т. д.), выдается исключение java.util.InputMismatchException. Я прочитал и перечитал документацию о BigDecimal, Scanner , java.util.InputMismatchException и некоторые связанные методы. Обратите внимание, что добавление setScale() не помогает.
Приведенный ниже фрагмент кода приводит к выдаче исключения. Обратите внимание, что я пробовал некоторые другие случайные элементы, например использование запятой в качестве десятичной дроби, поэтому я не думаю, что это какая-то региональная настройка.

Код: Выделить всё

        System.out.print("Enter opening balance (Use . for decimal.):\t");
BigDecimal checkBalSign = scan.nextBigDecimal();
Исключение:

Код: Выделить всё

        Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextBigDecimal(Scanner.java:2740)
at standardbank.TonyDen.Toolbox.MT940_Formatter.initialSetup(MT940_Formatter.java:137)
Я исправил это с помощью обходного пути:

Код: Выделить всё

        String decimalInput = scan.next();
BigDecimal checkBalSign = new BigDecimal(decimalInput);
Just perplexed as to why this is happening?
Note the same instance of Scanner is working fine with other setup input in the same program. I also tried a Scanner.reset() before the nextBigDecimal().


Источник: https://stackoverflow.com/questions/781 ... -exception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»