Gå til innhold

[Løst] Problem med Arraylists og søke etter ett objekt


Anbefalte innlegg

Jeg har en skoleoppgave hvor jeg skal lage en bank. Jeg har laget en GUI, hvor brukeren kan lage konto, sette inn/ta ut penger etc. Men når jeg prøver å søke etter en kunde får jeg en feilmelding.

 

for (index = 0; index < customers.size(); index++)
  {
   if (customers.get(index).getName().equals(exsistingAcc))
 {
 found = true;
 accNum = index;q
 index = customers.size();
 }

 

Feilmeldingen:

 

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

at Bank$searchButtonHandler.actionPerformed(Bank.java:258)

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

 

 

Takk for all hjelp!

Lenke til kommentar
Videoannonse
Annonse

Forøvrig en litt gammeldags måte å iterere ArrayList på, som sikkert henger igjen fra måten man tradisjonelt itererer et vanlig array.

 

Siden ArrayList implementerer Iterable kunne heller gjort dette:

 

for (Customer customer : customers) {
 if (customer.getName().equals(exsistingAcc)) {
found = true;
accNum = index;q
index = customers.size();
 }
}

 

Edit: Ehmm.. ser jo at du gjør noe med denne indexen til objektet etter at du har funnet det, så det er vel bare delvis riktig hva jeg har skrevet her. Når det er sagt så er det vel ikke spesielt lurt å ha accNum (Account Number?) definert som indexen av en array? Den burde da heller være en property i objektet. index = customers.size() bruker du for å bryte for loopen, i mitt eksempel kunne du da heller gjort break;

 

Da ville eksempelet sett mer slik ut:

 

for (Customer customer : customers) {
 if (customer.getName().equals(exsistingAcc)) {
   found = true;
   accNum = customer.getAccNum();
   break;
 }
}

Endret av MrEspen
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...