30. november 2001 - 12:49Der er
13 kommentarer og 1 løsning
IndexOutOfBoundsException
Jeg har på fornemmelsen at jeg ikke får gemt rigtigt i min ArrayListe. Når jeg prøver at hente det første objekt troede jeg havde gemt i min ArrayListe får jeg en IndexOutOfBoundsException.
Jeg har smidt lidt kode med det kunne jo være det kunne hjælpe. :o)
public class KundeClass { public String fnavn,enavn,tlf,adresse,post,by,email; public int id; public KundeClass() {
}
ArrayList alist = new ArrayList();
public KundeClass getKunde(int kid){ KundeClass k,k1; boolean fundet=false; int i=0; while (!fundet && i<alist.size()){
if (((KundeClass)alist.get(i)).getid()== kid) { fundet=true; }else{ i++; }
} return(KundeClass)(alist.get(i)); }
public int toint(String s){ int i; try{ i = new Integer( s ).intValue(); i=i; } catch( NumberFormatException nfe ){ i=-1; } return i; }
public ArrayList getArrayList(){
return alist; }
public void addKunde(KundeClass k){ alist.add(k); } ******************************************************
GUI
void jButtonNy_actionPerformed(ActionEvent e) {
kunde = new KundeClass(); KundeClass k; String nr = jTextFieldID.getText(); String fn = jTextFieldFN.getText(); String en = jTextFieldEN.getText(); String adr = jTextFieldADR.getText(); String post = jTextFieldPNR.getText(); String by = jTextFieldBY.getText(); String tlf = jTextFieldTLF.getText(); String em = jTextFieldEM.getText(); int i = kunde.toint(nr); kunde.setid(i); kunde.setfnavn(fn); kunde.setenavn(en); kunde.setadresse(adr); kunde.setby(by); kunde.setpost(post); kunde.settlf(tlf); kunde.setemail(em); k = kunde; kunde.getArrayList().add(k);
læg try{...} catch( IndexOutOfBoundsException e ) { e.printStackTrace() } uden om public KundeClass getKunde(int kid) og kør den igen ... så skulle den gerne fortælle dig præcist hvor det går galt
Er det bare mig eller roder du lidt rundt i det med kunde objekter og din kunde class???
Har du en klasse hvor du opretter dine kuneobjekter for jeg kan ellers ikke se at du opretter dem nogen steder. Hvis dine kunde objekter er en instans af din kundeClass, så skal du jo oprette dem i din konstruktor
Sidst men ikke mindst ser det ud til at du forsøger at bruge din kundeclass til både at instantiere kunde objekter OG som container for dine kunde objekter.... Dette kan man IKKE
Joh ... man kan godt, men om det er smart, ved jeg nu ikke.
Hvis man laver en subklasse til arraylist AList som Singleton, og sætter det objekt til at være static:
private static AList alist = AList.getInstance();
så kan du vist nok lige slippe afsted med det.
Pænt? Nej Smart? Måske, men jeg kan ikke komme i tanke om nogle situationer, hvor det er tilfældet (måske bortset fra tilfælde, hvor listen skal deles mellem alle instanser af KundeClass).
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.