java.lang.numberformatexception: недействительный double: “”

получение ошибки недопустимого Double java.lang.numberformatexception недействительным double: “”, в чем причина этого

Мероприятие 1

package com.example.solarcalculator; import android.os.Bundle; import android.widget.Button; import android.annotation.SuppressLint; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.app.AlertDialog; import android.content.Intent; @SuppressLint("UseValueOf") public class MainActivity extends Activity { private EditText input1; private EditText input2; private EditText input3; private EditText input4; private EditText input5; private MainActivity mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this; setContentView(R.layout.activity_main); input5 = (EditText) findViewById(R.id.input5); Button button1 = (Button) findViewById(R.id.button1); input4 = (EditText) findViewById(R.id.input4); input1 = (EditText) findViewById(R.id.input1); input2 = (EditText) findViewById(R.id.input2); input3 = (EditText) findViewById(R.id.input3); button1.setOnClickListener(new OnClickListener() { @SuppressWarnings("unused") private AlertDialog show; @SuppressLint("UseValueOf") @Override public void onClick(View arg0) { if ( (input4.getText().toString() == " ") || (input4.getText().length() ==0) || (input5.getText().length() == 0) || (input5.getText().toString() == " ")){ show = new AlertDialog.Builder(mContext).setTitle("Error") .setMessage("Some inputs are empty") .setPositiveButton("OK", null).show(); } else if ((input1.getText().length() != 0) && (input3.getText().length() ==0) && (input2.getText().length() == 0)){ double w = new Double(input3.getText().toString()); double t = new Double(input4.getText().toString()); double x = new Double(input5.getText().toString()); float e = 7; double num = 1000*x; double den = w*t*e; double payback = num/den; double money = w*t*e/1000; Intent intent = new Intent(MainActivity.this, Power.class); intent.putExtra("payback", payback); intent.putExtra("money", money); startActivity(intent); } else if ((input1.getText().length() == 0) && (input3.getText().length() != 0) && (input2.getText().length() != 0)){ double t = new Double(input4.getText().toString()); double x = new Double(input5.getText().toString()); double v = new Double(input2.getText().toString()); double i = new Double(input3.getText().toString()); float e = 7; double num = 1000*x; double den = v*i*t*e; double payback = num/den; double money = v*i*t*e/1000; Intent intent = new Intent(MainActivity.this, Power.class); intent.putExtra("payback", payback); intent.putExtra("money", money); startActivity(intent); } else { double t = new Double(input4.getText().toString()); double x = new Double(input5.getText().toString()); double v = new Double(input2.getText().toString()); double i = new Double(input3.getText().toString()); float e = 7; double num = 1000*x; double den = v*i*t*e; double payback = num/den; double money = v*i*t*e/1000; Intent intent = new Intent(MainActivity.this, Power.class); intent.putExtra("payback", payback); intent.putExtra("money", money); startActivity(intent); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } 

деятельности2

 package com.example.solarcalculator; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; @SuppressLint("NewApi") public class Power extends Activity { private double money; private double payback; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.power); payback = getIntent().getDoubleExtra("payback",0); money = getIntent().getDoubleExtra("money", 0); TextView pay = (TextView) findViewById(R.id.textView2); String payback1 = Double.toString(payback); pay.setText(payback1); TextView mon = (TextView) findViewById(R.id.textView4); String money1 = Double.toString(money); mon.setText(money1); } } 

Я получаю java.lang.numberformatexception недействительным double: “” ошибка в logcat кто-нибудь, пожалуйста, помогите

4 Solutions collect form web for “java.lang.numberformatexception: недействительный double: “””

Причина в том, что “” не является действительным двойным. Вам нужно проверить строку до или уловить такие исключения

 double w; try { w = new Double(input3.getText().toString()); } catch (NumberFormatException e) { w = 0; // your default value } 

Значение double зависит от языка устройства. Например, для устройств на французском языке номер 0.179927 равен 0,179927, который всегда будет NumberFormatException при parsingе его в double из-за запятой.

Вам нужно изменить разделитель от comma до point . Вы можете изменить разделитель либо путем установки языкового стандарта, либо с помощью DecimalFormatSymbols .

Если вы хотите, чтобы разделитель группировки был точкой, вы можете использовать европейский язык:

 NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN); DecimalFormat df = (DecimalFormat)nf; 

В качестве альтернативы вы можете использовать class DecimalFormatSymbols для изменения символов, отображаемых в форматированных числах, создаваемых методом format . Эти символы include десятичный разделитель, разделитель группировки, знак минуса и знак процента, среди прочего:

 DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(currentLocale); otherSymbols.setDecimalSeparator(','); otherSymbols.setGroupingSeparator('.'); DecimalFormat df = new DecimalFormat(formatString, otherSymbols); 

Вы должны сделать так, как показано ниже. Поместите его внутри блока catch try

  double w = new Double(input3.getText().toString()); 

Лучше также проверить на .equals("") вместе с null .

У вас есть прослушиватель afterTextChanged в EditText. Когда вы вернетесь, нажмите и очистите введенный текст, он пройдет != null , но все равно "" .

Это сработало для меня:

  double myDouble; String myString = ((EditText) findViewById(R.id.editText1)).getText().toString(); if (myString != null && !myString.equals("")) { myDouble = Double.valueOf(myString); } else { myDouble = 0; } 
  • Как разбирать массив JSON с помощью Gson
  • Ошибка: выполнение выполнено для задачи ': app: processDebugResources'. > java.io.IOException: не удалось удалить папку "" в андроид-студии
  • Android, Java: HTTP POST Request
  • Android: отправка данных> 20 байтов BLE
  • Сборщик мусора в Android
  • Преобразование из одной базы в другую в Java
  • Невозможно скомпилировать проект, когда я использую Lombok под IntelliJ IDEA
  • Как правильно строить банки от IntelliJ?
  • Android загружает двоичные файлы
  • Ошибка: Не удалось запустить SDK-инструмент mksdcard
  • Как получить текущий момент в формате ISO 8601 с датой, часом и минутой?
  • Interesting Posts

    Ошибка проверки: значение недействительно

    Ноутбук не включается

    Float vs Decimal в ActiveRecord

    Как работает Дафф?

    Каковы наилучшие идентификаторы подсети для максимального количества хостов?

    Что означает «… разрешает немодульный объект и не может быть импортировано с использованием этой конструкции» означает?

    Шпатлевка: как подавить предупреждения о безопасности?

    Как ограничить зарядку аккумулятора на Surface Pro (2) или Windows 8 (.1)?

    Брандмауэр Windows предотвращает совместное использование файлов и принтеров

    Я использую Windows 7, и я получаю адрес 169.254.xx ip

    Утечка памяти в Google Chrome

    Каков всеобъемлющий диапазон float и double в Java?

    Проблемы с совместимостью javafx 8 – статические поля FXML

    Эмулятор GPU для программирования CUDA без аппаратного обеспечения

    Socket.IO – как мне получить список подключенных сокетов / клиентов?

    Давайте будем гением компьютера.