将字符串从文本字段解析为double

时间:2013-12-17 14:15:24

标签: java parsing double gettext

我正在尝试将文本字段中的字符串解析为double:

Double.parseDouble(variable.getText())

然而该程序抛出以下异常:

error: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at gpacalculator.xGPA.calGPAbtnActionPerformed(xGPA.java:341)

以下是我的声明:

private void calGPAbtnActionPerformed(java.awt.event.ActionEvent evt) {                                                
  String q1,q2,q3,q4,q5,q6,q7,q8,w1,w2,w3,w4,w5,w6,w7,w8;
    q1 = course1.getText();
    q2 = course2.getText();
    q3 = course3.getText();
    q4 = course4.getText();
    q5 = course5.getText();
    q6 = course6.getText();
    q7 = course13.getText();
    q8 = course15.getText();
    w1 = course7.getText();
    w2 = course8.getText();
    w3 = course9.getText();
    w4 = course10.getText();
    w5 = course11.getText();
    w6 = course12.getText();
    w7 = course14.getText();
    w8 = course16.getText();

    gpaCal.setUnits1(Double.parseDouble(q1));
    gpaCal.setUnits2(q2);
    gpaCal.setUnits3(q3);
    gpaCal.setUnits4(q4);
    gpaCal.setUnits5(q5);
    gpaCal.setUnits6(q6);
    gpaCal.setUnits7(q7);
    gpaCal.setUnits8(q8);
    gpaCal.setGrade1(w1);
    gpaCal.setGrade2(w2);
    gpaCal.setGrade3(w3);
    gpaCal.setGrade4(w4);
    gpaCal.setGrade5(w5);
    gpaCal.setGrade6(w6);
    gpaCal.setGrade7(w7);
    gpaCal.setGrade8(w8);
}

注意:我只试图解析第一个以显示代码的想法。

3 个答案:

答案 0 :(得分:1)

来自Double#parseDouble(String) JavaDoc:如果字符串为空则抛出NullPointerException

在解析之前,你需要检查null(也许在变量上也可以为null),所以像这样:

if(variable != null && variable.getText() != null) {
    Double.parseDouble(variable.getText()
}

答案 1 :(得分:0)

我打赌你的NPE会在调用堆栈中传播,这就是为什么它被xGPA.java:341捕获了。

final String variableText = (variable != null) ? variable.getText() : null;
final Double result = (variableText != null) ? Double.parseDouble(variableText) : 0;

答案 2 :(得分:0)

首先检查字符串是否为空。即如果文本字段中未输入任何文本,则会返回错误。