Почему вы хотите рассматривать неверный ввод как 0?Конечно, вы хотели бы сказать пользователю, что он допустил ошибку, а не считать, что он набрал ноль.
Если вы анализируете пользовательский ввод, вам, вероятно, следует использовать DecimalFormat
вместо BigDecimal
конструктора - таким образом он будет использовать соответствующую культурную информацию.(Используйте setParseBigDecimal
, чтобы DecimalFormat
проанализировать BigDecimal
вместо double
.)
Затем, вместо преобразования значений BigDecimal в double, используйте:
if (price.compareTo(BigDecimal.ZERO) < 0)
Iпредложил бы указать пользователю три различных состояния:
- Число не может быть проанализировано
- Число было отрицательным (или, возможно, недействительным каким-либо другим способом; у вас естьмаксимальное значение или максимальное количество цифр)?
- Номер был действительным