2016-04-10 15 views
1

Ich konvertiere ein TextView in Double und führe dann Berechnungen aus und konvertiere dann zurück in eine Zeichenkette. Ich sehe, dass wenn mein textview = "" den Fehler ungültigen Double "" wirft.Ungültige Double "" bei String zu Double to String Konvertierung

Ich habe eine Überprüfung der Länge der Textansicht vor der Berechnung hinzugefügt, aber es wirft immer noch den Fehler. Jede Hilfe wird geschätzt.

public void afterTextChanged(Editable s) { 
     if (textView.toString().length() > 0) { 
      Double ini = Double.parseDouble(textView.getText().toString()); 
      Double calc = ini * 3.2808; 
      //passwordEditText.setText(textView.getText()); 
      passwordEditText.setText(Double.toString(calc)); 
     } else { 
     passwordEditText.setText(""); 
     } 
    } 

Antwort

0

Mai werden Sie eine leere Zeichenfolge als Wert erhalten, versuchen if Zustand auf die folgende Veränderung:

if (textView.toString().trim().length() > 0) { 
    //logic 
} 
2

die getText Methode Verwenden Sie den Text aus einem TextView zu bekommen. Die toString-Methode gibt etwas anderes zurück - eine textuelle Darstellung der Ansicht selbst. Sie können es auch zuschneiden, falls es zusätzliche Leerräume gibt.

String text = textView.getText().toString().trim(); 
    if (text.length() > 0) { 
     Double ini = Double.parseDouble(text); 
0
String text = textView.getText().trim(); 
if (!text.isEmpty()) { 
    try { 
     double ini = Double.parseDouble(text); 
     double calc = ini * 3.2808; 
    } catch (NumberFormatException e) { 
     --- 

double die primitiven Typ sein, Double ein Objekt-Wrapper, etwas umständlichen Umwandeln ("unboxing") zu verdoppeln.

parseDouble verwendet jedoch das Computersprachenformat: mit einem Dezimalpunkt und keine Tausendertrennzeichen. Für ein anderes Gebietsschema wie die meisten europäischen Länder ist das Dezimaltrennzeichen ein Komma. Für Portabilität:

NumberFormat nf = NumberFormat.getInstance(); // Default 
NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH); // Or fixed 

try { 
    Number n = nf.parse(text); 
    double ini = n.doubleValue(); 
    ... 
} catch (ParseException e) { 
    ... 

Auch wenn parseDouble in Ihrem Fall ausreichen würde, jetzt Tausendertrennzeichen sind möglich. Und zur Anzeige von Zahlen ist ein NumberFormat noch nützlicher.

Verwandte Themen