Java中的parseInt中的.getText()出错

时间:2014-02-17 19:25:42

标签: java nullpointerexception jtextfield gettext parseint

我知道标题可能没那么有用。我很抱歉。我的问题是我正在尝试创建一个简单的MPG应用程序来帮助我习惯GUI。我有一加仑和一英里的JTextField。我还有一个可编辑的JTextField来显示MPG。我试图将用户输入转换为整数,然后将加仑和英里输入除以每加仑英里数的结果,这将显示。

我有如下所示的parseInt:

    int mil = Integer.parseInt(miles1.getText());
    int gal = Integer.parseInt(gallons1.getText());

然后是MPG:

int mpg = gal / mil;

它在代码中没有显示错误,但是一旦我运行应用程序,我就会收到这些错误:

java.lang.NullPointerException
at app.<init>(app.java:40)
at app$1.run(app.java:26)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

有人知道造成这种情况的原因吗?

2 个答案:

答案 0 :(得分:0)

首先,你说你有两个名为加仑和英里的textareas但是你使用了标识符gallons1和miles1。

如果情况并非如此,请尝试初始化加仑和里程jtextarea。

例如,您可能会看到类似这样的内容

    JTextArea gallons1;
    JTextArea miles1;

分别尝试制作这些

    JTextArea gallons1=new JTextArea();
    JTextArea miles1=new JTextArea();

答案 1 :(得分:0)

听起来问题是当你调用.getText()时JTextFields为null。在对字段进行数学运算时确保它们具有值,您就可以了。

如果您想完全避免错误,请使用if (miles1.matches("[0-9]*) { logic }如果输入不正确,则不会为Integer.parseInt引发错误(正则表达式将失败,因为它是非数字的)。