Java - JOptionPane.showInputDialog错误

时间:2015-01-09 01:21:05

标签: java swing if-statement joptionpane

大家好,我遇到了JOptionPane.showInputDialog输入字段的问题。 我遇到的问题是,当选择取消按钮或选择确定按钮为空或分类时我遇到了错误。有什么建议。 我第一次尝试修复此问题,我将c int更改为interger,因此我可以使用if语句和null,例如

Integer cInterger = new Integer(c);
  if (cInterger.equals(null)){
      return;}

一起
cInterger == null
cInterger !=null

但无济于事

int a = 0;  //
int b = 0; //
int c = 0; //
    if (selected) {
        if (command.equals("amount")) { 
            Scanner readFile = null;
                try {
                    readFile = new Scanner(new FileReader("BANK.txt"));
                    } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                        e.printStackTrace();
                    } 
                    String account = "";
                    account = readFile.nextLine(); 
                    String amount = JOptionPane.showInputDialog(frame,"Enter an amount"); //assign user input to string amount
                    a= Integer.parseInt(account); //conversion of scanned string to int for easy subtraction                
                    b= Integer.parseInt(amount); 
                    c = a-b; 

                        try {  
                                if( c == 0){
                                    JOptionPane.showMessageDialog(null,"Granted.","Granted",JOptionPane.WARNING_MESSAGE);}
                                else if (c > 0){
                                    JOptionPane.showMessageDialog(null,"Granted.","Granted",JOptionPane.INFORMATION_MESSAGE); }
                                else{
                                    JOptionPane.showMessageDialog(null,"Denied.","Denied",JOptionPane.ERROR_MESSAGE);}  

产生的错误

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: null
        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at Options$1MyItemListener.itemStateChanged(Options.java:58)
        at javax.swing.AbstractButton.fireItemStateChanged(Unknown Source)
        at javax.swing.AbstractButton$Handler.itemStateChanged(Unknown Source)
        at javax.swing.DefaultButtonModel.fireItemStateChanged(Unknown Source)
        at javax.swing.JToggleButton$ToggleButtonModel.setSelected(Unknown Source)
        at javax.swing.ButtonGroup.setSelected(Unknown Source)
        at javax.swing.JToggleButton$ToggleButtonModel.setSelected(Unknown Source)
        at javax.swing.JToggleButton$ToggleButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$400(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.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.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)

1 个答案:

答案 0 :(得分:1)

如果您查看JavaDocs,就会发现

  

返回:
用户的输入,或 null 表示用户取消了输入

因此,尝试解析null没有任何意义,相反,您应该使用类似......

的内容
if (amount != null) {
    a = Integer.parseInt(amount);
    //...

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""似乎相当明显。

if (amount != null) {
   if (amount.trim().length() > 0) {
       //...
   } else {
       JOptionPane.showMessageDialog(frame, "The amount you entered is invalid");
   }

您还应该检查account