我正在尝试制作应用来计算CGPA。我用我的数字数据保存在Double变量类型中。
执行时,显示
java.lang.NumberFormatException:无效的double:"" 我的logcat错误。
这段代码显示错误:
total_credit = Double.parseDouble(ch1.getText().toString()) +
Double.parseDouble(ch2.getText().toString()) +
Double.parseDouble(ch3.getText().toString()) +
Double.parseDouble(ch4.getText().toString()) +
Double.parseDouble(ch5.getText().toString()) +
Double.parseDouble(ch6.getText().toString());
我试图将异常处理为:
try {
total_credit = Double.parseDouble(...);
} catch (NumberFormatException e) {
total_credit = 0.0;
}
现在执行时,错误发生在同一行,错误是:
ComponentInfo {com.example.aashish.cgpacalculator / com.example.aashish.cgpacalculator.calculator_page}:java.lang.NumberFormatException:无效的double:""
答案 0 :(得分:1)
有些文字是空的。不可能说出哪一个。检查所有值:
答案 1 :(得分:1)
你有一个 java.lang.NumberFormatException ,并且正如消息所示,原因是你正在尝试解析或转换或者没有加倍的东西(在你的情况下是一个空字符串)
在进行任何转换之前,您始终可以验证窗口小部件是否持有空字符串
只是做
if (myString.isEmpty()) {
}
答案 2 :(得分:0)
if(ch1.getText().toString().trim().equalsIgnoreCase("") || ch2.getText().toString().trim().equalsIgnoreCase("") || ch3.getText().toString().trim().equalsIgnoreCase("") || ch4.getText().toString().trim().equalsIgnoreCase("") || ch5.getText().toString().trim().equalsIgnoreCase("") || ch6.getText().toString().trim().equalsIgnoreCase("") ){
// empty String
}
else{
try {
double number1 = Double.parseDouble(ch1.getText().toString().trim());
double number2 = Double.parseDouble(ch2.getText().toString().trim());
double number3 = Double.parseDouble(ch3.getText().toString().trim());
double number4 = Double.parseDouble(ch4.getText().toString().trim());
double number5 = Double.parseDouble(ch5.getText().toString().trim());
double number6 = Double.parseDouble(ch6.getText().toString().trim());
double total_credit = number1 + number2 + number3 + number4 + number5 + number6;
} catch (Exception e) {
Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT).show();
}
}
答案 3 :(得分:0)
您需要检查每个控件ch1,ch2,ch3,ch4,ch5,ch6的文本是否为空。
您可以使用返回布尔值的TextUtils.isEmpty(ch1.getText())
。