Java 将文本字段中的字符串解析为双精度字符串
我正在尝试将文本字段中的字符串解析为双精度:Java 将文本字段中的字符串解析为双精度字符串,java,parsing,double,gettext,Java,Parsing,Double,Gettext,我正在尝试将文本字段中的字符串解析为双精度: Double.parseDouble(变量.getText()) 但该程序会引发以下异常: 错误:gpacalculator.xGPA.calGPAbtnActionPerformed(xGPA.java:341)处的线程“AWT-EventQueue-0”java.lang.NullPointerException中出现异常 以下是我的声明: private void calGPAbtnActionPerformed(java.awt.event.
Double.parseDouble(变量.getText())
但该程序会引发以下异常:
错误:gpacalculator.xGPA.calGPAbtnActionPerformed(xGPA.java:341)处的线程“AWT-EventQueue-0”java.lang.NullPointerException中出现异常
以下是我的声明:
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);
}
注意:我只是试图解析第一个,以显示代码的想法 来自Double#parseDouble(String)
JavaDoc:如果字符串为null,则抛出NullPointerException
在解析之前,您需要检查null(如果可以为null,也可能检查变量),因此如下所示:
if(variable != null && variable.getText() != null) {
Double.parseDouble(variable.getText()
}
我打赌你的NPE是在调用堆栈中向上传播的,这就是为什么它被捕获在xGPA.java:341
final String variableText = (variable != null) ? variable.getText() : null;
final Double result = (variableText != null) ? Double.parseDouble(variableText) : 0;
首先检查字符串是否为空。i、 e.如果您的文本字段中没有输入任何文本,这将返回一个错误。变量
可能为null,我将添加它。如果文档为emptyOK,getText()将抛出NPE,因此这可能是您到达该字段的原因。如果需要双精度值,还可以添加一个通过0.0的else子句。我希望在运行程序时,在第一个文本字段中输入“3”。是否仍为null?否。所有包含文本的文本字段都将返回所需字符串。当应用程序在需要对象的情况下尝试使用null时,将引发NullPointerException。在该行设置断点,并检查该行上的每个对象,以查看它们是否为null。