2012-07-06 101 views
-2

當我選擇一個Jbutton來檢索JText.getText並從具有兩個值(string,double)的arraylist中搜索時,我正面臨一個問題。如下是我的代碼,請幫助。感謝Jbutton檢索JText.getText並從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 

(ProtectionDomain.java:76 )

at java.security.ProtectionDomain$1.doIntersectionPrivilege 

(P rotectionDomain.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 

(ProtectionDomain.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) 
+0

什麼不工作? – Talon876 2012-07-06 02:50:17

+0

更好地幫助發佈[SSCCE](http://sscce.org/) – mKorbel 2012-07-06 02:50:27

+0

您是否收到錯誤消息?如果是這樣,請告訴我們錯誤是什麼,包括異常堆棧跟蹤。否則,您需要告訴我們問題是什麼,所以我們可以幫助您。 – wattostudios 2012-07-06 02:54:59

回答

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"); 
} 

這是最好的,我可以拿出,不知道實際的問題是什麼,你正在經歷。

+0

這不會打印Joptionp.panel,但它不通過arraylist搜索..是我的循環完成corrently? – user1505604 2012-07-06 03:12:21