【问题标题】:Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "FALSE" [duplicate]线程“AWT-EventQueue-0”java.lang.NumberFormatException中的异常:对于输入字符串:“FALSE”[重复]
【发布时间】:2018-02-04 03:55:10
【问题描述】:

我的代码:

public class BehemothSelectGUI extends javax.swing.JFrame {
private static DBUtil db = new DBUtil();
private static Populate populate = new Populate();
static int WepHitPoints;
static int ShoulderHitPoints;
static int ChestHitPoints;
static int WristHitPoints;
static int HelmHitPoints;
static int WepAttack;
static int HelmDef;
static int ShoulderDef;
static int WristDef;
static int ChestDef;
static int HelmMoveSpeed;
static int WepMoveSpeed;
static int ChestMoveSpeed;
static int ShoulderMoveSpeed;
static int WristMoveSpeed;

private void cmbMothHeadActionPerformed(java.awt.event.ActionEvent evt) {                                          
    String data[][] = db.selectAll("tblBehemoth");

    for (int i = 0; i < data.length; i++) {
        if (data[i][1].equals((String) cmbMothHead.getSelectedItem())) {
            HelmHitPoints = Integer.parseInt(data[i][2]);
            HelmDef = Integer.parseInt(data[i][4]);
            HelmMoveSpeed = Integer.parseInt(data[i][5]); //StackTrace error
            break;
        }
    }

}   

错误:

线程“AWT-EventQueue-0”java.lang.NumberFormatException 中的异常:对于输入字符串:“FALSE” 在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 在 java.lang.Integer.parseInt(Integer.java:580) 在 java.lang.Integer.parseInt(Integer.java:615) 在 jumpp.BehemothSelectGUI.cmbMothHeadActionPerformed(BehemothSelectGUI.java:182) 在 jumpp.BehemothSelectGUI.access 100 美元(BehemothSelectGUI.java:12) 在 jumpp.BehemothSelectGUI$2.actionPerformed(BehemothSelectGUI.java:78) 在 javax.swing.JComboBox.fireActionEvent(JComboBox.java:1258) 在 javax.swing.JComboBox.contentsChanged(JComboBox.java:1332) 在 javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:118) 在 javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:93) 在 javax.swing.DefaultComboBoxModel.addElement(DefaultComboBoxModel.java:131) 在 javax.swing.JComboBox.addItem(JComboBox.java:716) 在 jumpp.Populate.cmbPop(Populate.java:66) 在 jumpp.BehemothSelectGUI.(BehemothSelectGUI.java:41) 在 jumpp.HeroSelectGUI.btnChooseMothActionPerformed(HeroSelectGUI.java:170) 在 jumpp.HeroSelectGUI.access$000(HeroSelectGUI.java:14) 在 jumpp.HeroSelectGUI$1.actionPerformed(HeroSelectGUI.java:78) 在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 在 javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 在 javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 在 javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 在 java.awt.Component.processMouseEvent(Component.java:6533) 在 javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 在 java.awt.Component.processEvent(Component.java:6298) 在 java.awt.Container.processEvent(Container.java:2236) 在 java.awt.Component.dispatchEventImpl(Component.java:4889) 在 java.awt.Container.dispatchEventImpl(Container.java:2294) 在 java.awt.Component.dispatchEvent(Component.java:4711) 在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 在 java.awt.Container.dispatchEventImpl(Container.java:2280) 在 java.awt.Window.dispatchEventImpl(Window.java:2746) 在 java.awt.Component.dispatchEvent(Component.java:4711) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 在 java.awt.EventQueue.access$500(EventQueue.java:97) 在 java.awt.EventQueue$3.run(EventQueue.java:709) 在 java.awt.EventQueue$3.run(EventQueue.java:703) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 在 java.awt.EventQueue$4.run(EventQueue.java:731) 在 java.awt.EventQueue$4.run(EventQueue.java:729) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 构建成功(总时间:5 秒)

我一直在为其他变量使用 Integer.parseInt(data[i][number] 转换器,但只有这个会引发错误。

更新: 当我 sysoutLine 它返回'FALSE'。我仍然不知道它是如何返回 false 的,因为在我的数据库中 col 5 是数字

System.out.println(data[i][5]);

【问题讨论】:

  • 异常信息的哪一部分你不明白?您给 parse 的值是“FALSE”。那不是一个数字。所以你不能把它解析成一个int。我们无法告诉您为什么尝试将包含布尔值的字符串解析为数字。
  • 请检查data[i][5]是否指向提取数据的右列
  • 从重复的问题中查看这个答案:stackoverflow.com/a/18711985/1531124
  • 和无关的:先了解java基础。例如:为什么将类的所有字段设为静态。不知道为什么这是一个坏主意的人很可能没有准备好创建摇摆 UI 或与数据库交互。有句话说:先学爬再跑。

标签: java


【解决方案1】:

Integer.parseInt(String str) java 文档非常清楚地说明了这一点。

抛出:NumberFormatException - 如果字符串不包含 可解析整数。

而且 FALSE 不是可解析的整数。

所有推断来自您的堆栈跟踪:

线程“AWT-EventQueue-0”中的异常 java.lang.NumberFormatException:对于输入字符串:“FALSE”在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

【讨论】:

  • 是的,我明白了,但我不想解析 FALSE。我从设置为长整数的数据库列中获取数据
  • @StuartCampbell 在这种情况下,您可能必须共享整个 data[][] 值才能进行验证。日志至少从某处读取输入字符串为FALSE
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多