Приложение вылетает из-за BigDecimal

У меня просто есть два представления editText. Один находится в основном действии, а другой — в диалоговом окне предупреждения. Один в основном действии содержит строку чисел (т.е. 0,00), и моя цель - добавить все, что пользователь вводит из второго editText в диалоговом окне предупреждения, к числу в основном действии.

Я пытаюсь использовать BigDecimals для добавления, и вот мой код в onClickListnener

   private BigDecimal user_input;
   private BigDecimal original;
   private BigDecimal sum;
   protected void onCreate(Bundle savedInstanceState){
   .
   .
   .
   .
                 //here is the problem
                 user_input=new BigDecimal( editText_in_alert.getText().toString());
                 original  =new BigDecimal( editText_in_main_activity.getText().toString());
                 sum=user_input.add(original); 

Это то, как мы должны преобразовать строку в BigDecimal и сложить их вместе?

Мое приложение вылетает, когда я нажимаю кнопку, но оно отлично работает, когда я удаляю операции BigDecimal...

вот журнал:

      java.lang.NumberFormatException: Invalid long: " 000 "
        at java.lang.Long.invalidLong(Long.java:124)
        at java.lang.Long.parse(Long.java:363)
        at java.lang.Long.parseLong(Long.java:353)
        at java.lang.Long.parseLong(Long.java:321)
        at java.math.BigDecimal.<init>(BigDecimal.java:344)
        at java.math.BigDecimal.<init>(BigDecimal.java:425)
        at com.example.galaxy.expense.MainActivity$1.onClick(MainActivity.java:48)
        at android.view.View.performClick(View.java:4780)
        at android.view.View$PerformClick.run(View.java:19866)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5257)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

person GalaxyVintage    schedule 23.05.2015    source источник
comment
Если вы имеете дело с деньгами или вам нужна правильная точность, используйте BigDecimal, иначе вы также можете использовать double.   -  person Pankaj    schedule 23.05.2015
comment
Да, я имею дело с деньгами, и люди предлагают использовать bigdecimal   -  person GalaxyVintage    schedule 23.05.2015
comment
Вы можете проверить свой журнал и вставить сюда, где происходит сбой приложения.   -  person Pankaj    schedule 23.05.2015
comment
Вы имеете в виду журналы ADB?   -  person GalaxyVintage    schedule 23.05.2015
comment
да, можете ли вы показать журналы и инициализировали ли вы свой editText, прежде чем получать от них значения.   -  person Pankaj    schedule 23.05.2015
comment
Вы уже пробовали этот ответ? Кроме того, каковы значения editText_in_alert и editText_in_main_activity при сбое?   -  person redbmk    schedule 23.05.2015
comment
@redbmk есть способ проверить? я все еще новичок в этом   -  person GalaxyVintage    schedule 23.05.2015
comment
@Clairvoyant Я добавил журнал, который выделен красным   -  person GalaxyVintage    schedule 23.05.2015
comment
Вы можете попробовать запустить в режиме отладки, если используете Android Studio. или Eclipse. Однако, судя по вашей ошибке, похоже, что у него проблемы с разбором строки 000 . Вы можете обеспечить правильное форматирование в текстовом вводе (используя android:inputType="number" быть достаточно хорошим?), или поймать NumberFormatException и попросить пользователя изменить свой ввод.   -  person redbmk    schedule 23.05.2015
comment
@redbmk спасибо! Я вернулся, чтобы проверить свой XML-файл, и поместил теги подчеркивания вокруг строки, которую я хочу проанализировать, и это вызывает проблему.   -  person GalaxyVintage    schedule 23.05.2015
comment
@Lzy ... как раз о вашем другом (удаленном) вопросе: вот что вы можете сделать ... ideone.com/Y8iO3m (моя активность1, моя активность2, моя активность3)   -  person Selvin    schedule 08.06.2015
comment
@Selvin спасибо за код, кажется, теперь я лучше его понимаю   -  person GalaxyVintage    schedule 08.06.2015


Ответы (1)


По-видимому, в моем XML-файле я поставил теги подчеркивания около 0,00, что дает ошибку при преобразовании в BigDecimal. Я удалил теги, и теперь все работает.

person GalaxyVintage    schedule 23.05.2015