06. december 2008 - 00:49Der er
17 kommentarer og 1 løsning
Problemer med en metode.
Hejsa.
Jeg er løbet ind i et problem jeg ikke helt kan finde ud af.
Mit problem består af, at jeg skal hente et navn udfra et nummer i en ArrayListe
Der er flere klasser indover og jeg vil forsøge at smide de metoder og ArrayLister jeg benytter her.
Hvis vi starter helt fra nederst i hirakiet med min Medlems klasse som består af nogle variabler, bla. navn og medlemsnr.
Jeg har i denne klasse bla. metoderne:
public String getNavn() { return navn; }
public int getMedlemsnr() { return medlemsnr; }
I en anden klasse jeg har kaldt MedlemsListe har jeg en ArrayListe:
private ArrayList<Medlem> medlemmer = new ArrayList<Medlem>();
og min hentNavn metode som søger min ArrayListe igennem og hvis der er et match i medlemsnummeret returnere den navnet på medlemmet:
public String hentNavn(int medlemsnr) { String resultat = ""; int i=0; while (i<medlemmer.size() && medlemsnr!=medlemmer.get(i).getMedlemsnr()) i++; if (i<medlemmer.size()) // Der er fundet resultat = medlemmer.get(i).getNavn(); return resultat; }
Jeg har så en kontrol klasse som skaber referencer mellem mine objekter som jeg har i forskellige ArrayLister I denne har jeg en reference til min hentNavn metode som findes i MedlemsListe klassen:
private MedlemsListe medlemsRef;
public Kontrol() { medlemsRef = new MedlemsListe(); }
public String hentMedlemsnr( int medlemsnr ) { return medlemsRef.hentNavn( medlemsnr ); }
I min GUI klasse har jeg så 2 tekst felter hvor jeg i feltet tfMedlemsnr indtaster medlemsnavnet og navnet skal så returneres i feltet tfNavn
private void tfMedlemsnrActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: tfNavn.setText(fitnessCenterKontrol.hentMedlemsnr(Integer.parseInt(tfMedlemsnr.getText()))); }
Min problem er, at der ikke kommer noget frem selvom jeg ved at medlemsnummeret findes i min MedlemsListe - Er der nogle der kan forklare mig hvad jeg gør galt?
Jeg kan ikke umiddelbart se noget galt. Men vi ser kun noget af det, så et par gæt: - din tfMedlemsnrActionPerformed-metode udføres ikke - din medlemsliste er tom
Hvis Medlem klassen fik en equals metode, så kunne MedlemsListe hentNavn bruge ArrayList indexOf - eller måske skulle MedlemsListe bruge en HashMap<String,Medlem>.
@arne_v Hvis jeg skriver while (i<medlemmer.size() && medlemsnr.equals(medlemmer.get(i).getMedlemsnr())) får jeg compilerfejl: int cannot be dereferenced
Hvad hulen betyder det?
HashMap har vi desværre ikke lært om endnu, så jeg tror at jeg vil skyde mig selv i foden hvis jeg begynder at benytte sådan en fremfor en ArrayListe ;p
@erik Er der noget mere kode som jeg evt. kan vise dig for at du hjælpe? Mit Array burde være "fyldt" da jeg indlæser objekter til min liste inden jeg laver søgningen. Hvordan kan jeg se om min ActionPerformed metode udføres?
Hmm.. Noget kunne godt tyde på at min Actionperformed metode ikke virker korrekt (der ker i hvert fald intet når jeg indtaster numeret i feltet og trykker på Enter), men jeg kan ikke gennemskue hvorfor den ikke virker.
Jeg har forsøgt at "debugge" min GUI via Netbeans og der kommer ingen fejl?
Hentes og vises objekterne i min ArrayList, så som jeg ser det er den ikke tom.. Gad vide om fejlen ligger i min "hent Navn" metode:
public String hentNavn(int medlemsnr) { String resultat = ""; int i=0; while (i<medlemmer.size() && medlemsnr!=medlemmer.get(i).getMedlemsnr()) i++; if (i<medlemmer.size()) // Der er fundet resultat = medlemmer.get(i).getNavn(); return resultat; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.