@hottabb

Почему возникает NumberFormatException?

при нажатии на кнопку рассчет - вылетает ошибка и приложение перезапукскается, уже всю голову сломал, в чем может быть ошибка?
КОД:
@Override
    public void onClick(View v) {
        float Per = 0;
        float Temp = 0;
        float result = 0;

        Per = Float.parseFloat(Peresushenie.getText().toString());
        Temp = Float.parseFloat(Temperatura.getText().toString());

        switch (v.getId()){
            case R.id.back:
                finish();
                sp.play(soundklick, 1, 1, 0, 0, 1);
                break;
            case R.id.rasschet:
                if (TextUtils.isEmpty(Peresushenie.getText().toString())
                        || TextUtils.isEmpty(Temperatura.getText().toString())) {
                    Toast toast = Toast.makeText(getApplicationContext(),
                            "Введите данные!", Toast.LENGTH_LONG);
                    toast.show();
                    break;
                }
                else {
                    oper = "*";
                    result = Per * Temp;
                    sp.play(soundklick, 1, 1, 0, 0, 1);
                    break;
                }

            default:
                break;
        }

Ошибка:

03-17 23:54:20.234 4236-4236/com.hottabb.sugar.sugar_zavod E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.hottabb.sugar.sugar_zavod, PID: 4236
java.lang.NumberFormatException: Invalid float: ""
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.parseFloat(StringToReal.java:308)
at java.lang.Float.parseFloat(Float.java:306)
at com.hottabb.sugar.sugar_zavod.RasschetActivity.onClick(RasschetActivity.java:70)
at android.view.View.performClick(View.java:5226)
at android.view.View$PerformClick.run(View.java:21350)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5571)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
  • Вопрос задан
  • 336 просмотров
Решения вопроса 1
Buckstabue
@Buckstabue
Android java developer
Метод Float.parseFloat() может бросать NumberFormatException, если ты передашь туда некорректную строку. В данном случае ты туда передаешь пустую строку, что не является валидным числом.
Тебе надо добавить обработку данной ошибки или проверять строку на пустоту. Как обрабатывать ошибки - можно прочесть в документации по try catch оператору
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы