-2

i'm facing a problem when select a Jbutton to retrieve JText.getText and search from arraylist with two values (string,double). 以下是我的代码请帮助。谢谢

public void initCards(){
    StudentCard s1 = new StudentCard("1234567",5.00);
    EZLinkCard.add(s1); 
    StudentCard s2 = new StudentCard("1001001",0.00);
    EZLinkCard.add(s2);
    AdultCard a1 = new AdultCard ("5678901",20.00);
    EZLinkCard.add(a1);
}

public EZLinkCard searchCard(String cardNum){      
    for(int a=0; a < EZLinkCard.size(); a++){// Loop for print methods
        System.out.println(a);
        EZLinkCard p = (EZLinkCard)EZLinkCard.get(a);
        if (p.getCardNum().equals(cardNum)){ 
            return p;  
        } 
        else {
            JOptionPane.showMessageDialog(null,"Please Key in valid card number" );
        }
    } 

    if (event.getActionCommand().equals("Retrive card information")) {         
        String cardNum = TCardNumber.getText();
        CardList c = new CardList();
        EZLinkCard p ;
        p = c.searchCard("cardNum");
        String z = Double.toString(p.getBalance());
        TCardBalance.setText(z); 
    }

线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException

at ezlink.MainMenu$ButtonHandler.actionPerformed(MainMenu.java:86)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased

(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege

(保护域.java:76)

at java.security.ProtectionDomain$1.doIntersectionPrivilege

(保护域.java:87)

at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege

(保护域.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters

(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy

(EventDispatchThread.java:117)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
4

1 回答 1

0

我只是在猜测,但即使您输入了有效的卡号,您也可能多次收到“请输入有效的卡号”弹出窗口?如果是这样,您需要将JOptionPane呼叫移到for循环之外,就像这样......

public EZLinkCard searchCard(String cardNum){      
    for(int a=0; a < EZLinkCard.size(); a++){// Loop for print methods
        System.out.println(a);
        EZLinkCard p = (EZLinkCard)EZLinkCard.get(a);
        if (p.getCardNum().equals(cardNum)){ 
            return p;  
        }
    }
    JOptionPane.showMessageDialog(null,"Please Key in valid card number" );
}

这是我能想到的最好的方法,但不知道您遇到的实际问题是什么。

于 2012-07-06T03:01:03.433 回答