Avatar billede rbl Praktikant
13. december 2001 - 02:45 Der er 15 kommentarer og
1 løsning

Linked List

Jeg har et problem med linked list:

Jeg indsætter 8 forskellige objekter af klassen \"Kunde\":

LinkedList KundeListe = new LinkedList();
KundeListe.add(new Kunde(\"Svend Bent\"));
.
.
KundeListe.add(new Kunde(\"Karen Andersen\"));

Derefter bruger jeg KundeListe.get(i) til at hente en kunde frem. Problemet er, at lige meget hvilket index \"i\" jeg bruger (i er mellem 1 og 7), får jeg den samme Kunde ud. Det er altid den sidst indsatte kunde, jeg får ud.

Så lige meget om jeg skriver KundeListe.get(3) eller KundeListe.get(5), vil jeg få Kunden \"Karen Andersen\" ud.
Avatar billede greybeard Nybegynder
13. december 2001 - 03:00 #1
Brug en iterator istedet.

Iterator it;
it = KundeKiste.Iterator();
while(it.hasNext()){
    System.out.println( it.next());
}
Avatar billede rbl Praktikant
13. december 2001 - 03:34 #2
Hvis jeg skal bruge en iterator, skal det være en ListIterator, da jeg også skal bruge prev().

ListIterator it;
it = KundeListe.Iterator(); //Denne linie vil den ikke være med til.

Jeg har prøvet med:
it = KundeListe.iterator();
it = new KundeListe.iterator();
it = KundeListe.ListIterator();
Det virker ikke.

Desuden vil jeg hellere gøre det som jeg først gjorde, hvis det altså bare ville virke.
Avatar billede rbl Praktikant
13. december 2001 - 03:44 #3
Rettelse:

it = KundeListe.listIterator() virker, men stadigvæk kan jeg kun få den samme Kunde ud.
Avatar billede greybeard Nybegynder
13. december 2001 - 03:45 #4
Hvis du gerne vil bruge index, hvad så med en ArraryList eller en Vector?
Avatar billede greybeard Nybegynder
13. december 2001 - 03:45 #5
Sætternissen igen
Hvis du gerne vil bruge index, hvad så med en ArrayList eller en Vector?
Avatar billede greybeard Nybegynder
13. december 2001 - 03:49 #6
Hvordan ser din
Kunde(String)
konstruktor ud?
Avatar billede rbl Praktikant
13. december 2001 - 04:00 #7
public class Kunde {

  private static int kundeNr;
  private static String kundeNavn;
  private static String kundeTlf;

  public Kunde(int knr, String navn, String tlf){
      kundeNr = knr;
      kundeNavn = navn;
      kundeTlf = tlf; 
  }
 
  public static int hentNr(){
      return kundeNr; 
  }

  public static String hentNavn(){
      return kundeNavn;
  }
 
  public static String hentTlf(){
      return kundeTlf;
  }     

}

Jeg har tænkt på at bruge ArrayList, men jeg er lidt usikker på hvordan den virker. Kan størrelsen af ArrayListen ændres i runtime ? og kan man indsætte et objekt et vilkårligt sted ?
Avatar billede greybeard Nybegynder
13. december 2001 - 04:10 #8
add(int index, Object element)
          Inserts the specified element at the specified position in this list.
Og ja, den er dynamisk.

Men det du har nu skal også virke.
Er du sikker på fejlen ikke ligger et andet sted
Avatar billede rbl Praktikant
13. december 2001 - 04:28 #9
Tja, jeg ved ikke hvad det skulle være. Der BLIVER oprettet 8 objekter i listen, som der skal (jeg har tjekket med KundeListe.size()). Men det virker somom at alle 8 objekter er ens, selvom jeg putter 8 forskellige kunder ind:

KundeListe.add(new Kunde(1,\"Jens Andersen\",\"86341283\"));
        KundeListe.add(new Kunde(5,\"Mikael Jepsen\",\"86638573\"));
        KundeListe.add(new Kunde(12,\"Gert Hansen\",\"86527644\"));
        KundeListe.add(new Kunde(3,\"Mogens Sørensen\",\"32765432\"));
        KundeListe.add(new Kunde(6,\"Kim Gjerslev\",\"86991143\"));
        KundeListe.add(new Kunde(26,\"Brian Tarm Smith\",\"26621551\"));
        KundeListe.add(new Kunde(7,\"Mette Søndersø\",\"86337512\"));
        KundeListe.add(new Kunde(10,\"Annelise Andersen\",\"86341283\"));
Avatar billede greybeard Nybegynder
13. december 2001 - 04:41 #10
Det burde jeg have set for længe siden.
Du bruger static variabler.
Static variabler gælder for klassen, og er ens for alle instancer.

public class Kunde {

  private int kundeNr;
  private String kundeNavn;
  private String kundeTlf;

  public Kunde(int knr, String navn, String tlf){
      kundeNr = knr;
      kundeNavn = navn;
      kundeTlf = tlf; 
  }
 
  public int hentNr(){
      return kundeNr; 
  }

  public String hentNavn(){
      return kundeNavn;
  }
 
  public String hentTlf(){
      return kundeTlf;
  }     

}
Avatar billede rbl Praktikant
13. december 2001 - 04:56 #11
Hmm, jeg har ikke rigtig forstået det der med static og non-static :-(

Nå, men det virker i hvert fald nu :-)  Tak for hjælpen.

Hvis du lige kan hjælpe mig med en lille ting, runder jeg det op til 100 point.

Hvad er der galt med denne sætning:

kundeNrTxt.setText(String.valueOf(kunde1.hentNr()));

kundeNrTxt er et tekstfelt, og kunde1.hentNr() returnerer et integer.
Avatar billede steffl Nybegynder
13. december 2001 - 04:59 #12
Så vidst jeg husker betyder static bare at der kun kan være én instans af variablen/objektet.
Avatar billede steffl Nybegynder
13. december 2001 - 05:02 #13
...det vil sige at i din kode var der kun 3*1 variabler, ikke 3*8, eller hvor meget det nu var.

(tror jeg... ;)
Avatar billede greybeard Nybegynder
13. december 2001 - 05:05 #14
Ingenting, jeg kan få øje på
Avatar billede greybeard Nybegynder
13. december 2001 - 05:07 #15
Static:
Det er rigtigt.
Static variabler har samme værdi for alle instancer af klassen
Avatar billede rbl Praktikant
13. december 2001 - 05:35 #16
ok, tak
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

IT-JOB

IT-Universitetet i København

CIO

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering