0 Daumen
867 Aufrufe

Ich möchte einen Iterator erstellen, aber auch den Ablauf des Intervalls erleichtern, indem ich die Java Faltung wie im folgenden Beispiel unterstütze.

for(int i:panel2(1,5))
    System.out.println(i); // devuelve 1 2 3 4 5
Ich muss Iterable implementieren, was die Implementierung der Iterator-Methode erfordert.

Im Moment habe ich versucht:

import java.util.Iterator;
import java.util.NoSuchElementException;

public class Panel implements Iterable<Integer>{

  int begin;
  int end;

  // alguna lógica acá para llenar los valores de begin y de end, como constructor y/o setter y getter.
    public Panel(int begin, int end){
        this.begin = begin;
        this.end = end;

    }

    @Override
    public Iterator<Integer> iterator() {

        return panel1(begin,end);
    }

    private static Iterator<Integer> panel1(final int begin,final int end){
        Iterator<Integer> it = new Iterator<Integer>(){

            private int nextValue = begin;
            private final int max = end;

            public boolean hasNext() {
                return nextValue <= max;
            }

            public Integer next() {
                if (!hasNext()) {
                    throw new NoSuchElementException();
                }
                return Integer.valueOf(nextValue++);
            }

            public void remove() {
                throw new UnsupportedOperationException();
            }
        };
        return it;
    }

    public static void main(String[] args) {

        Panel panel = new Panel(1,5);
        for(int i:panel)
          System.out.println(i);
    }
}

Aber es zieht mich zurück:

C:\Users\antoi\Documents\Programming\Julien\TD7_iterators>java Panel.java
error: class found on application class path: Panel

Avatar von

Hast du wirklich alle Methoden aus dem Interface implementiert? Bisher sehe ich nur den Konstruktor. Du erbst keine Methoden! Du musst aber alle Methoden, die im Interface deklariert wurden, implementieren.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community