Avatar billede bullwinkel Nybegynder
30. november 2001 - 12:49 Der 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);



  }

  void jButtonÅben_actionPerformed(ActionEvent e) {
  String nr = jTextFieldID.getText();
  //kunde.toint(nr);
  kunde.getKunde(kunde.toint(nr));
  jTextFieldFN.setText(kunde.getfnavn());
  jTextFieldEN.setText(kunde.getenavn());
  jTextFieldADR.setText(kunde.getadresse());
  jTextFieldPNR.setText(kunde.getpost());
  jTextFieldBY.setText(kunde.getby());
  jTextFieldTLF.setText(kunde.gettlf());
  jTextFieldEM.setText(kunde.getemail());
}
}
Avatar billede martin_schou Nybegynder
30. november 2001 - 13:00 #1
hvilken linje? Hvis du ved hvilken linje, du får fejlen, er det NOGET nemmere at finde årsagen.
Avatar billede bullwinkel Nybegynder
30. november 2001 - 13:03 #2
Desværre melder det ikke i hvilken linie fejlen opstår. :(
Avatar billede martin_schou Nybegynder
30. november 2001 - 13:06 #3
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
Avatar billede erikjacobsen Ekspert
30. november 2001 - 13:08 #4
Hvis du leder efter et kundeid, der ikke findes, får du indexfejl
Avatar billede erikjacobsen Ekspert
30. november 2001 - 13:12 #5
Måske leder du efter -1 ?
Avatar billede runberg Nybegynder
30. november 2001 - 13:17 #6
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
Avatar billede runberg Nybegynder
30. november 2001 - 13:20 #7
Desuden bude du helt klart læse lidt om høj samhørighed og lav kobling, for det er ikke god skik at programmere som du gør her!!!
Avatar billede runberg Nybegynder
30. november 2001 - 13:22 #8
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
Avatar billede martin_schou Nybegynder
30. november 2001 - 13:52 #9
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).
Avatar billede erikjacobsen Ekspert
30. november 2001 - 16:28 #10
Hvis listen er static er det faktisk et eksempel, som spørgeren har
set. Men i eksemplet ovenfor er den jo ikke static...
Avatar billede logical Nybegynder
30. november 2001 - 20:08 #11
erikjacobsen>> Hvad er det for et kursus du har kørende i øjeblikket :-)
Avatar billede erikjacobsen Ekspert
30. november 2001 - 20:16 #12
Malkning af geder med Java
Avatar billede logical Nybegynder
30. november 2001 - 20:26 #13
Morsom, det var faktisk er seriøst spørgsmål.
Avatar billede bullwinkel Nybegynder
05. december 2001 - 22:47 #14
....
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester