2016-04-10 17 views
1

私はtextViewをDoubleに変換してから計算を行い、文字列に変換し直しています。私は私のtextview = ""それは無効なダブルダブル ""を投げているときに参照してください。文字列をDouble to Stringに変換する際にDouble ""が無効

計算前にテキストビューの長さをチェックしましたが、それでもエラーがスローされています。どんな助けもありがとうございます。

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(""); 
     } 
    } 

答えて

0

は、あなたが値として空の文字列を取得しているとすることができ、次のようにif条件を変更してみてください:

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

TextViewからテキストを取得するためにgetTextメソッドを使用します。 toStringメソッドは、ビュー自体のテキスト表現を返します。追加の空白がある場合に備えて、トリミングすることもできます。もう少し情況プリミティブ型、ダブルオブジェクトラッパー、倍増する(「ボックス化解除」)に変換され

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

double

しかし、parseDoubleは、小数点と桁区切り記号なしのコンピュータ言語形式を使用します。ほとんどのヨーロッパ諸国のような別のロケールでは、小数点記号はコンマです。移植性のため:

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) { 
    ... 

あなたのケースでは、parseDoubleで十分ですが、今や千つのセパレータが可能です。また、数値を表示するためには、NumberFormatがさらに便利です。

関連する問題