【问题标题】:Error in .getText() in a parseInt in Java [duplicate]Java中的parseInt中的.getText()错误[重复]
【发布时间】:2014-03-17 06:06:12
【问题描述】:

我知道标题可能没有那么有用。我深感抱歉。我的问题是我正在尝试创建一个简单的 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)

有人知道这是什么原因吗?

【问题讨论】:

  • miles1gallons1null(或两者兼有)。
  • 您可能应该在 app.java 的第 40 行或附近显示代码,因为那是您的 NullPointerException 发生的地方。
  • @Samhain 第 40 行是`int mil = Integer.parseInt(miles1.getText());`
  • @user3320501 然后miles1 为空。你还没有初始化它。
  • @Samhain 你是如何初始化它的?我希望它获取两个 JTextfield 的用户输入,然后在单击按钮后将它们显示在不可编辑的 JTextfield 中。

标签: java nullpointerexception jtextfield gettext parseint


【解决方案1】:

首先你说你有两个名为gallons 和miles 的文本区域,但是你使用了标识符gallons1 和miles1。

如果不是这样,请尝试初始化加仑和英里 jtextarea。

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

    JTextArea gallons1;
    JTextArea miles1;

试着分别做这些

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

【讨论】:

    【解决方案2】:

    听起来问题是当您调用 .getText() 时 JTextField 为空。确保在字段上进行数学运算时它们具有值,你会没事的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多