Avatar billede page Nybegynder
28. juli 2005 - 17:59 Der er 9 kommentarer og
1 løsning

add og remove i ArrayList

1: I methoden 'persIBilen' add'er jeg en streng til min ArrayList 'liste', men det lægger sig oven på det sidst add'ede.. Hvorfor ligger den sig ikke "ved siden af"?

2: I methoden 'alleStigerUd' forsøger jeg at slette alt indholdet i min 'liste', men den sletter kun hveranden.. Jeg køre det igennem en for loop, og går udfra at det er her jeg laver en fejl, hvad gør jeg galt?

Her er koden:

import java.util.*;

public class Bil
{
    private int kilometer;
    private double pris=3.3;
    public ArrayList<String> liste;
   
 
    public void drive(int antalKilometer) // opdatere antal kørte kilometer
    {
        kilometer = kilometer + antalKilometer;
    }
   
    public double pris() // giver den vuderede salgspris
    {       
        return pris;
    }
   
    public String toString() // giver en besrivelse af bilen
    {
        return "Bilen har kørt: "+kilometer+" Km og koster: "+pris;
    }
   
    public void persIBilen(String personer) // hvormange der sidder i bilen
    {
        liste = new ArrayList<String>();
       
        liste.add(personer);
       
        //har tilføjet nogle i forvejen så jeg slipper for at taste nogen ind x antal gange
        liste.add("Frk. Olsen");
        liste.add("Leif");
        liste.add("Sjanten");
        liste.add("Fjotte");
        liste.add("Jens Fup");
       
    }
   
    public void hvemSidderIBilen()// fortæller hvem der sidder i bilen
    {
        System.out.println("Der er "+liste.size()+" person(er) i bilen"); //printer størrelsen på ArrayListen
        System.out.println("Det er: "+liste.toString());
    }
   
    public void alleStigerUd() // sletter dem fra ArrayListen
    {
        for(int n=0; n<liste.size(); n++)
        {
            liste.remove(n);
        }
        System.out.println("Der er nu "+liste.size()+" person(er) i bilen");
    }
}
Avatar billede arne_v Ekspert
28. juli 2005 - 18:08 #1
der er flere løsninger - en af dem må være at slette bagfra:

for(int n=liste.size()-1; n>=0; n--)
Avatar billede arne_v Ekspert
28. juli 2005 - 18:09 #2
Du kunne også bruge en:

while(!liste.isEmpty())
Avatar billede page Nybegynder
28. juli 2005 - 18:14 #3
Dit forslag: for(int n=liste.size()-1; n>=0; n--)
virker fint, men jeg har lige et spprgsmål til det. Hvorfor siger du "int n=liste.size()-1"? Jeg er ikke helt med på hvorfor det der "-1" skal med?
Avatar billede page Nybegynder
28. juli 2005 - 18:17 #4
Ahhh det skal self. med da indekset starter med 0. :)
Avatar billede arne_v Ekspert
28. juli 2005 - 18:19 #5
:-)
Avatar billede arne_v Ekspert
28. juli 2005 - 18:20 #6
det der skete i din oprindelige kode var

a
b
c
d

size=4

slet 0

b
c
d
size 3

slet 1

b
d

size 2

ud af løkken
Avatar billede arne_v Ekspert
28. juli 2005 - 18:22 #7
og et svar
Avatar billede page Nybegynder
28. juli 2005 - 18:35 #8
Tak for hjælpen, og for forklaringen!

Så mangler jeg kun at finde ud af hvorfor den smider nyt indhold til ArrayListe oven i sig selv. :)
Avatar billede kube Nybegynder
28. juli 2005 - 21:23 #9
du kan jo også anvende metoden clear()
Avatar billede arne_v Ekspert
28. juli 2005 - 21:38 #10
he he

ja
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