Filter

Adriano10

Bekanntes Mitglied
Code:
public  interface Sequence {
    
    int getNext();
}

public class Naturals implements Sequence{
    
    private int value = 0;
    
    Naturals(){
        
    }
    
    public Naturals(int zahl){
        this.value = zahl;
    }

    public int getNext(){   

    
    return value++;
        
    }
    
    public static void main(String[] args) {
        
        Sequence s = new ZapMultiples(3, new Naturals());
        while(s.getNext() < 100) {
        System.out.println(s.getNext());
    
        }
    Warum bekomme ich ergebnis 1 3 5 7 9 11 13 15 17 anstatt 1 2 3 4 5 usw?
    
    Und wie kann ich getNext() erweitern, so dass jede 3-e Element absorbiert wird, z.B
    1 2 4 5 7 8 10 usw...
    
    Vielen Dank im Voraus...
 

httpdigest

Top Contributor
Du brauchst schonmal eine Schleife (oder Rekursion) in ZapMultiples.getNext(), um solange aus der darunterliegenden Sequence Zahlen zu ziehen, bis die gezogene Zahl kein Vielfaches (des ersten Konstruktorparameters von ZapMultiples(int, Sequence)) ist.
 

Adriano10

Bekanntes Mitglied
Du brauchst schonmal eine Schleife (oder Rekursion) in ZapMultiples.getNext(), um solange aus der darunterliegenden Sequence Zahlen zu ziehen, bis die gezogene Zahl kein Vielfaches (des ersten Konstruktorparameters von ZapMultiples(int, Sequence)) ist.
Danke für den Hinweis, aber klappt es leider nicht trozdem... Ich bin wieder auf dem falschen Weg
Code:
public class ZapMultiples extends Filter {
    private int base;
    private int zahl = 1;

    ZapMultiples(Sequence s) {
        super(s);
    }

    ZapMultiples(int zahl, Sequence s) {
        super(s);
        this.base = zahl;
    }

    public int getZahl() {
        return base;
    }

    public void setZahl(int zahl) {
        this.base = zahl;
    }

   
    public boolean absorbieren(int zahl) {
        return zahl % base != 0;
    }
   
    public int getNext() {
   
        int result = zahl;
        if(absorbieren(zahl))
        zahl++;
       
        return result;
       
   
    }
       


}
 

httpdigest

Top Contributor
Wie sieht denn die Klasse Filter aus, und was ist ihr genauer Zweck, ausser, dass sie vermutlich einfach nur an eine darunterliegende Sequence delegiert?
 

httpdigest

Top Contributor
Oh mann, also ich kürz das mal ab hier:
Filter hätte ich so gebaut, dass es eine darunterliegende Sequence bekommt und ein Prädikat, das angibt, ob ein Element nun herausgefiltert werden soll oder nicht:
Java:
abstract class Filter implements Sequence {
  private final IntPredicate predicate;
  private final Sequence delegate;
  Filter(IntPredicate predicate, Sequence delegate) {
    this.predicate = predicate;
    this.delegate = delegate;
  }
  @Override
  public int getNext() {
    int num;
    do {
      num = delegate.getNext();
    } while (!predicate.test(num));
    return num;
  }
}
Dann hätte ich ZapMultiples so umgesetzt:
Java:
class ZapMultiples extends Filter {
  public ZapMultiples(int factor, Sequence delegate) {
    super(i -> i % factor != 0, delegate);
  }
}
 

Adriano10

Bekanntes Mitglied
Code:
Die Klasse, die ich entwickelt habe, aber wie ich jetzt noch weiterkomme, weiss ich leider
nicht, so dass bei dem Aufruf getNext() auf der Konsole 1, 2, 4, 5, 7, 8, 10 angezeigt
wird

public  interface Sequence {
    
    int getNext();
    

}

public class Naturals implements Sequence{
    
    private int value = 0;
    
    Naturals(){
        
    }
    
    public Naturals(int zahl){
        this.value = zahl;
    }

    public int getNext(){   

        
    
    return value++;
        
    }
    

    public static void main(String[] args) {
        
        Sequence s = new ZapMultiples(3, new Naturals());
    //    Sequence s = new Naturals();
        //Sequence s = new Primes();
        while(true) {
        System.out.println(s.getNext() + " ");
    
        }
        
    
    }
}

public abstract class Filter implements Sequence{
    
    private  Sequence s;
    Filter(){
        
    }
    protected Filter(Sequence s) {
        this.s = s;
    }
    
    public int getNext() {
    return    s.getNext();
    }
}

public class ZapMultiples extends Filter {
    private int base;
    private int zahl = 1;

    ZapMultiples(Sequence s) {
        super(s);
    }

    ZapMultiples(int zahl, Sequence s) {
        super(s);
        this.base = zahl;
    }

    public int getZahl() {
        return base;
    }

    public void setZahl(int zahl) {
        this.base = zahl;
    }

    
    public boolean absorbieren(final int zahl) {
        return zahl % base != 0;
    }
    
    public int getNext() {
    
        int result = 0;
        
        
         while(zahl > 0) {
             zahl++;
            
         }
         if(!absorbieren(zahl)) {
                 result++;
             }
        
        return result;
        
    
    }
        


}

public class Primes extends Filter {

    private int value = 0;

    public int getNext() {
        final int result = value;
        if (value == 2)
            value = 3;
        else
            do
                value += 2;
            while (value > 0 && !isPrime(value));
        return result;
    }

    public static boolean isPrime(final int n) {
        if (n == 2)
            return true;
        if (n % 2 == 0)
            return false;
        final int zahl = (int) Math.sqrt(n);
        for (int t = 3; t <= zahl; t += 2)
            if (n % t == 0)
                return false;
        return true;
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J String Filter Java Basics - Anfänger-Themen 5
M Streams filter Java Basics - Anfänger-Themen 15
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
S Java Filter und Query Java Basics - Anfänger-Themen 4
S JTable - Filter an anderen Colums Java Basics - Anfänger-Themen 2
P Liste mit Lücken mittels Filter aggregieren Java Basics - Anfänger-Themen 7
T Erste Schritte MongoDB Filter Klasse fehlt Java Basics - Anfänger-Themen 0
C Erste Schritte Filter für Generics oder ähnliches Java Basics - Anfänger-Themen 2
R SQL ähnlicher Filter für Java Listen Java Basics - Anfänger-Themen 2
S Array-Filter Java Basics - Anfänger-Themen 11
G Apache POI Filter erstellen Java Basics - Anfänger-Themen 14
T Datei Filter inkl. Unterverzeichnisse Java Basics - Anfänger-Themen 3
O JFileChooser Filter an Dateinamen hängen Java Basics - Anfänger-Themen 4
M Kann man im Filter nach mehreren Strings filtern lassen Java Basics - Anfänger-Themen 11
H Bau eines Filter für geparste Strings. Java Basics - Anfänger-Themen 4
M Filter-Klasse Java Basics - Anfänger-Themen 3
S Web Mining - XML Filter der richtige Anstatz? Java Basics - Anfänger-Themen 2
G filter: import-problem mit eclipse Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben