2012-07-06 106 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