处理NumberFormatException

时间:2014-10-05 00:38:49

标签: java netbeans

private void Cubic_meter(){

        int v1 = Integer.parseInt(lbl_READING_NUMBER.getText());
        int a = Integer.parseInt(jLabel_PREVIOUS_READ.getText());
        int b = Integer.parseInt(jLabel_PRESENT_READ.getText());
        int cm = Math.abs(a-b);
    try{

        if(jLabel_PREVIOUS_READ.getText().equals("")){
    }

        if(jLabel_PRESENT_READ.getText().equals("")){
        }
    else{
        String sql = "UPDATE reading set Cubic_meter=? where Reading_Number=?";
        ps=conn.prepareStatement(sql);
        ps.setInt(1, cm);
        ps.setInt(2, v1);
        ps.executeUpdate();
    }
    }catch(Exception e){

        JOptionPane.showMessageDialog(null, e);
    }
}

线程中的异常“AWT-EventQueue-0”java.lang.NumberFormatException:对于输入字符串:“” at java.lang.NumberFormatException.forInputString(Num berFormatException.java:65) 在java.lang.Integer.parseInt(Integer.java:504) 在java.lang.Integer.parseInt(Integer.java:527) 在mawasa_water_system.MainForm.Cubic_meter(MainForm.java:210) 在mawasa_water_system.MainForm.PREVIOUS_READING_OKAc tionPerformed(MainForm.java:3449) 在mawasa_water_system.MainForm.access $ 900(MainForm.j ava:18) 在mawasa_water_system.MainForm $ 13.actionPerformed(Ma inForm.java:830) 在javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:2018) 在javax.swing.AbstractButton $ Handler.actionPerformed(AbstractButton.java:2341) 在javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 在javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:259) 在javax.swing.plaf.basic.BasicButtonListener.mouseRe租用(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.jav a:6516) 在javax.swing.JComponent.processMouseEvent(JComponen t.java:3320) at java.awt.Component.processEvent(Component.java:628 1) at java.awt.Container.processEvent(Container.java:222 9) at java.awt.Component.dispatchEventImpl(Component.jav a:4872) at java.awt.Container.dispatchEventImpl(Container.jav a:2287) at java.awt.Component.dispatchEvent(Component.java:46 98) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:4492) 在java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:4422) at java.awt.Container.dispatchEventImpl(Container.jav a:2273) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:46 98) at java.awt.EventQueue.dispatchEventImpl(EventQueue.j ava:735) at java.awt.EventQueue.access $ 200(EventQueue.java:103) at java.awt.EventQueue $ 3.run(EventQueue.java:694) at java.awt.EventQueue $ 3.run(EventQueue.java:692) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain $ 1.doIntersectionPri vilege(ProtectionDomain.java:76) at java.security.ProtectionDomain $ 1.doIntersectionPri vilege(ProtectionDomain.java:87) at java.awt.EventQueue $ 4.run(EventQueue.java:708) at java.awt.EventQueue $ 4.run(EventQueue.java:706) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain $ 1.doIntersectionPri vilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:705) at java.awt.EventDispatchThread.pumpOneEventForFilter s(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(E ventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:138) 在java.awt.EventDispatchThread.run(EventDispatchThre ad.java:91)

如果我使用     NumberFormatException my

ps=conn.prepareStatement(sql);,
ps.setInt(1, cm);,
ps.setInt(2,v1);,
ps.executeUpdate(); 

转向错误,为什么会这样。

1 个答案:

答案 0 :(得分:0)

您应该在验证getText不为空之后定义v1,a和b。

    int v1 = Integer.parseInt(lbl_READING_NUMBER.getText());
    int a = Integer.parseInt(jLabel_PREVIOUS_READ.getText());
    int b = Integer.parseInt(jLabel_PRESENT_READ.getText());
    int cm = Math.abs(a-b);

此外,

if(jLabel_PREVIOUS_READ.getText().equals("")){

}

无论前一次阅读中是否有文字,都看不到任何内容,因为在此之后没有其他内容。