-2

Jbutton を選択して JText.getText を取得し、2 つの値 (string、double) を持つ arraylist から検索するときに問題に直面しています。以下は私のコードです。ありがとう

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 に答える