我正在学习Java,我写了这个非常简单的课程。一切都很好,直到我走到尽头。在第二个showinputDialog
之后,它继续从我完成的另一个java文件的另一个对话框中继续。我想我的代码中有错误,或者我的日食中的某些设置已关闭。
// Reads in the radius and length of a cylinder and computes volume
// using the formula: area = radius * radius * PI
// volume = area * length
import javax.swing.JOptionPane;
class ComputeVolumeOfCyclinder {
public static void main(String[] arugs) {
final double PI = 3.1415;
String radiusString = JOptionPane.showInputDialog(
"Enter the radius, \n for example: 15.25");
String lengthString = JOptionPane.showInputDialog(
"Enter the length, \n for example: 50.15");
double radius = Double.parseDouble(radiusString);
double length = Double.parseDouble(lengthString);
double area = radius * radius * PI;
double volume = area * length;
area = (int)area * 100 / 100.0;
volume = (int)volume * 100 / 100.0;
String output = "The area is " + area + "\n The volume is " + volume;
JOptionPane.showMessageDialog(null, output);
}
}
在我存在Eclipse并尝试再次阅读之后,它会显示此错误消息。
Exception in thread "main" java.lang.NullPointerException
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:989)
at java.lang.Double.parseDouble(Double.java:510)
at ComputeLoanUsingInputDialog.main(ComputeLoanUsingInputDialog.java:14)
更新:我不知道为什么,但现在看来我甚至无法运行这个程序。通常我按下绿色播放按钮,它将运行我的程序。但重新启动后,它总是运行另一个程序(不是我打算做的)。我认为我目前的计划应该是其中一个选择吗?
答案 0 :(得分:1)
更好的答案,因为您正在运行eclipse而不是Run As
,您可能需要点击Debug As
,如图所示
然后使用step into
(F5)和step over
(F6)
经过测试,如果您输入正确的值,您的代码就会正常运行,但如果您取消showInputDialog
将返回null
,您必须检查它,并检查是否只允许使用数值。
答案 1 :(得分:0)
根据Javadocs for Double.parseDouble
,
抛出:NullPointerException - 如果字符串为null
字符串radiusString
或lengthString
必须是null
(以第14行为准)。
如果输入被取消,方法showInputDialog
将返回null
。你将需要处理这种情况。