我正在尝试将文本字段中的字符串解析为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);
}
注意:我只试图解析第一个以显示代码的想法。
答案 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)
首先检查字符串是否为空。即如果文本字段中未输入任何文本,则会返回错误。