NumberFormatingExcepton如果App是第一次启动的话

时间:2016-03-17 19:22:32

标签: java android

我有4 TextView个。其中3个显示另一个活动中EditText输入值的结果,并以共享首选项保存。

第四个TextView需要显示之前3 TextView的总和。

我收到错误:NumberFormatingException invalid double ""

这是我的代码:

// GETTING VALUES FOR FIRST 3 TEXTVIEWS
textViewRezultat1RMPotisakSKlupe.setText(settings.getString("benchSave", null));
textViewRezultat1RMCucanj.setText(settings.getString("squatSave", null));
textViewRezultat1RMMrtvoDizanje.setText(settings.getString("deadSave", null));

//LITTLE BIT OF MATH TO GET VALUE OF FOURTH
double prvo = Double.parseDouble(textViewRezultat1RMPotisakSKlupe.getText().toString());
double drugo = Double.parseDouble(textViewRezultat1RMCucanj.getText().toString());
double trece = Double.parseDouble(textViewRezultat1RMMrtvoDizanje.getText().toString());
double rezultat = 0;

rezultat = (prvo + drugo + trece);

textViewRezultat1RMUkupno.setText(Double.toString(rezultat));

这就像一个魅力。

问题是,如果第一次启动应用程序(没有存储数据),我会收到上面提到的错误。

任何人都可以帮我解决吗?

2 个答案:

答案 0 :(得分:1)

实际上,当尝试从不表示数字的字符串解析double或仅仅为null时,会出现问题。

  

<强> parseDouble

     

public static double parseDouble(String s)                             抛出NumberFormatException

     

返回一个初始化为由指定String表示的值的新double,由double类的valueOf方法执行。

     

<强>参数:   s - 要解析的字符串。

     

返回:由...表示的double值   字符串参数。

     

投掷

     

NullPointerException - 如果字符串为null

     

NumberFormatException - 如果字符串不包含可解析的   双

因此,您需要测试这两种情况,以确保您没有遇到任何一种错误情况。

String prvoString = textViewRezultat1RMPotisakSKlupe.getText().toString();
Double prvo; 
if(prvoString != null) { //shouldn't occur
  try {
    prvo = Double.parseDouble(prvoString); 
  } catch (NumberFormatException ex) { //inputs like "" or "banana"
     //Tell the user he is entering invalid input
  }
}

那么,当您的应用首次运行时,为什么会出现这种情况?加载视图并尝试解析空(&#34;&#34;)字符串时,将执行parseDouble代码。

答案 1 :(得分:0)

在执行double prvo = Double.parseDouble()之前,请始终检查您的字符串是否有效,因为如果您的字符串为空,就像""一样,则无法将其转换为Double,因为它不是数字

所以在每次Double.parseDouble检查之前都是这样 -

if (!TextUtils.isEmpty(yourString))
    Double.parseDouble(yourString);