Ошибка NumberFormatException

Код:

editText2=(EditText) findViewById(R.id.editText2); editText3=(EditText) findViewById(R.id.editText3); float from_value= Float.parseFloat(editText2.getText().toString()); editText3.setText(" "+(from_value * 100.0)); 

И ошибка logcat:

03-18 03: 19: 07.847: E / AndroidRuntime (875): вызвано: java.lang.NumberFormatException: Invalid float: ""

Кажется, что String в editText2 пуст, поэтому он не анализирует его как float.

Возможное решение состоит в том, чтобы проверить, является ли строка первой пустой, а затем принять решение о значении по умолчанию, другое – уловить исключение:

 float from_value; try { from_value = Float.parseFloat(editText2.getText().toString()); } catch(NumberFormatException ex) { from_value = 0.0; // default ?? } 

Вы должны стараться избегать использования try / catch, если это вообще возможно, потому что это не предпочтительный метод.

Правильный способ избежать этой ошибки – остановить ее до ее возникновения.

 if (mEditText.getText().toString().equals("")) { value = 0f; } else { value = Float.parseFloat(mEditText.getText().toString()); } 

Обновление. Поскольку вы используете EditText , самый простой способ избежать исключения NumberFormatException – указать атрибут inputType чтобы он принимал только числа. Пример XML: android:inputType="number" . Тем не менее, вы все равно можете получить значение больше (или меньше), которое не может хранить тип данных.

Затем, в зависимости от вашего варианта использования, вы можете даже повысить уровень с помощью пользовательского «IntEditText» или настраиваемого InputFilter чтобы вы могли указать минимальное и максимальное количество и повторно использовать код для всех приложений.

Вероятно, хорошая идея для проверки значения, которое вы читаете из editText2, прежде чем разбирать его на float. Сначала убедитесь, что это действительный номер.

IMHO вы вводите некоторое значение non float, которое вызывает эту ошибку.

Для меня лучший способ сделать это так:

 editText2=(EditText) findViewById(R.id.editText2); editText3=(EditText) findViewById(R.id.editText3); if(!editText2.getText().toString().matches("")){ float from_value= Float.parseFloat(editText2.getText().toString()); editText3.setText(" "+(from_value * 100.0)); } 

А также добавьте эту строку в свой xml для editText2

 android:inputType="numberDecimal" 

Надеюсь, поможет !