Avatar billede dat00c12 Nybegynder
28. september 2001 - 09:48 Der er 3 kommentarer og
1 løsning

Iterator

Jeg skal lave en klasse der implementere iterator....Som gennemløber de 20 tal....Er der nogen der kan hjælpe...det med tallene kan jeg godt selv med hvordan gennemløber man og hvordan laver man classen
Avatar billede disky Nybegynder
28. september 2001 - 09:50 #1
En Iterator er bare noget man bruger.

Hvad er det for 20 tal, og hvordan har du dem liggende ?
Avatar billede erikjacobsen Ekspert
28. september 2001 - 10:34 #2
Jeg har klippet det her ud af en større sammenhæng til dig, dat00c12:

public class MasserAfTal {

private int[] tal = {3,7,9,13};


public java.util.Iterator iterator() {

    class StakIterator implements java.util.Iterator {
      int current;

      public StakIterator() {
        current=0;
      }

      public boolean hasNext() {
        return current<4;
      }

      public Object next() {
        Object value=new Integer(tal[current]);
        current++;
        return value;
      }

      public void remove() {
        throw new java.lang.UnsupportedOperationException();
      }
    };
    return new StakIterator();
  }

    public static void main(String[] args)
    {
        MasserAfTal m = new MasserAfTal();

        java.util.Iterator i = m.iterator();
        while (i.hasNext()) {
          System.out.println(i.next());
        }
    }
}
Avatar billede dat00c12 Nybegynder
28. september 2001 - 10:56 #3
Kanon tak for hjælpe
Avatar billede erikjacobsen Ekspert
28. september 2001 - 11:07 #4
Ok - du vil ikke også have forklaret hvad der foregår ??

Men det får du så alligevel. StakIterator-klassen (det er ikke en stak her,
men som sagt er det klippet ud) implementerer interfacet Iterator.
Det kræver at man lave de tre metoder next(), hasNext() og remove().
Vi gider/kan ikke lave den sidste, så den giver en exception.

StakIterator er så lavet som en lokal klasse til metoden iterator(). Dvs. navnet
StakIterator kan ikke ses udenfor, og der er nogle begrænsninger i hvilke
variabler vi kan bruge i klassen. Men vi kan, og det er så det eneste iterator() gør,
oprette en StakIterator, og aflevere den som en Iterator.

Dette er egentlig en smule for simpelt, for vi burde tage højde for
at det vi aflæser i next() udpeget af current ikke har ændret sig, og ellers give
en exception på det. Det kræver at vi husker hvor mange iteratorer vi har sat
i sving, og i vores set-metoder i klassen MasserAfTal sætter nogle variabler
passende steder, som next() så aflæser, og hvis det så ikke giver mening at fortsætte
så lave den exception. Men det må blive en anden gang.
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