Omini Skrevet 4. mars 2013 Del Skrevet 4. mars 2013 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
Fred7555 Skrevet 4. mars 2013 Del Skrevet 4. mars 2013 Ikke helt sikker, men for meg ser det ut til at du får en NPE/NullPointerException i linje 258 når du klikker knappen som skal søke etter kunde. Hadde tatt en titt på den metoden, prøvd ting som customer != null ol, for å sjekke hva som er null. Lenke til kommentar
GeirGrusom Skrevet 4. mars 2013 Del Skrevet 4. mars 2013 - getName() kan returnere null - customers kan være null Lenke til kommentar
MrEspen Skrevet 4. mars 2013 Del Skrevet 4. mars 2013 (endret) 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 4. mars 2013 av MrEspen Lenke til kommentar
unwill Skrevet 4. mars 2013 Del Skrevet 4. mars 2013 Litt lite kode til å si hva som er galt, men av det jeg kan se utifra koden din som er "feil" men ikke har noe med nullpointeren din er: accNum = index;q Skal vel ikke være en q bak semikolon? Lenke til kommentar
quantum Skrevet 4. mars 2013 Del Skrevet 4. mars 2013 trenger du egentlig både index = customers.size(); og variabelen found? Det er litt rotete. foreslår at du setter et breakpoint i l 258 (hvor nå det måtte være) og ser hva som er null. Evt. gode gamle System.out.println(xyzzy); på de mistenkte ... Lenke til kommentar
Omini Skrevet 8. mars 2013 Forfatter Del Skrevet 8. mars 2013 Takk for all hjelp. Fant feilen, den var så simpel at jeg følte meg skikkelig dum... Måtte bare trykke enter... Lenke til kommentar
quantum Skrevet 8. mars 2013 Del Skrevet 8. mars 2013 Bare å venne seg til, skjer nesten hver dag det der :o) Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå