SuchCondition

A-Welt Forum
Verfügbare Informationen zu "SuchCondition"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: alexander
  • Forum: A-Welt Forum
  • Forenbeschreibung: Das geile Forum
  • aus dem Unterforum: Java-Forum
  • Antworten: 3
  • Forum gestartet am: Freitag 04.03.2005
  • Sprache: deutsch
  • Link zum Originaltopic: SuchCondition
  • Letzte Antwort: vor 18 Jahren, 7 Monaten, 7 Tagen, 16 Stunden, 11 Minuten
  • Alle Beiträge und Antworten zu "SuchCondition"

    Re: SuchCondition

    alexander - 18.09.2005, 14:35

    SuchCondition
    Zuerst müssen wir die SuchCondition irgendwo haben. Dies empfielt sich gut in Unserer TestKlasse einzufügen (s. Interface im Heft):

    Code: public class TestKlasse extends Frame implements SuchCondition

    Damit wir keine Fehler bekommen müssen wir die 2 Funktionen in unserer Klasse haben.
    Unsere Objekte (im Vector) müssen int-Werte beinhalten d.h. wir verwenden die Integer Klasse als Objekt. Mit der Funktion intValue() können wir den int-Wert von der Integer-Klasse bekommen. Jetzt können wir in der isEqual() vergleichen:

    Code: public boolean isEqual(Object o1, Object o2)
    {
       if( ((Integer)o1).intValue() == ((Integer)o2).intValue() )
          return true;
       return false;

    }

    (Integer)o1 ist wichtig(!), da man das Object übergeben bekommt. Man sagt quasi dass das Object von Typ Integer ist. Dannach kann man eine Funktion der Klasse benutzen; Die Klammern ((Integer)o1) sind hier auch nötig, damit man auch wirklich sicher geht, dass das Object gemeint ist. Der Rest sollte klar sein, oder?

    Ähnlich wie das zuvor sieht isGraeterThan aus:

    Code: public boolean isGreaterThan(Object o1, Object o2)
    {
       if( ((Integer)o1).intValue() > ((Integer)o2).intValue() )
          return true;
       return false;
    }

    Jetzt müssen wir das noch benutzerfreundlich machen. Wir brauchen einen Insert & Remove Button, Eingabe TextField, Ausgabe List und seqS SeqSearch-Object.
    seqS muss wie ein normales Object initalisiert werden (wer hat dieses Wort erfunden? ist ja Scheisse zu schreiben... egal). Der Konstruktor bekommt ja ein SuchCondition-Object; Dies ist bei uns die TestKlasse. Also:

    Code: seqS = new SeqSearch(this);

    this bedeutet das dieses Object, also wo man das this verwendet, gemeint ist.
    Jetzt muss man, wie gesagt, noch 2 Buttons erzeugen. Ist glaube nicht so schwer... hier aber die Funktionen dazu; Man muss die schon vorgefertigte Funktion insert() der SeqSearch verwenden. Da übergibt man das Object. Das war in unserem Fall... na... genau, das Integer-Object. Also Integer.valueOf(..). Dann müssen wir noch das Object dem Benutzer auch zeigen. Das geschiet über die List mit add(). Also liAusgabe.add(..). Jetzt am Stück:

    Code: public void insertFunc()
    {
       seqS.insert( Integer.valueOf(tfEingabe.getText()) );

       liAusgabe.add( tfEingabe.getText() );
    }

    Fast wie insertFunc funktioniert die removeFunc():

    Code: public void remove()
    {
       seqS.remove( Integer.valueOf(tfEingabe.getText()) );

       liAusgabe.remove( tfEingabe.getText() );
    }

    PS: Ich glaube Lommel hatte nocht weitere Buttons, aber keine Ahnung welche. Weis das jemand?

    mfg alexander



    Re: SuchCondition

    alexander - 18.09.2005, 14:38


    Falls jemand nicht die zwei Dateien hatt:

    Code: public interface SuchCondition {
      public abstract boolean isEqual(Object o1, Object o2);
      public abstract boolean isGreaterThan(Object o1, Object o2);
    }

    Code: import java.util.*;

    public class SeqSearch {
      private Vector data;
      private SuchCondition sc;
     
      public SeqSearch(SuchCondition sCond) {
        data = new Vector(5,5);
        sc =sCond;
      }
     
      public void insert(Object o) {
        data.add(o);
      }
     
      public int find(Object o) {
        int n = data.size();
        for (int i=0;i<n;i++)
          if (sc.isEqual(o,data.elementAt(i)))
            return i;
        return -1;
      }
     
      public int size() {
        return data.size();
      }
     
      public Object elementAt(int index) {
        if (index<data.size() && index>=0)
          return data.elementAt(index);
        else
          return null;
      }
     
      public void remove(Object o) {
        int index = find(o);
        if (index>=0)
          data.removeElementAt(index);
      }
    }



    Re: SuchCondition

    alexander - 21.09.2005, 16:33


    Hier ist noch die find-Funktion:

    Man bekommt die Position im Array, durch die Aufrufung von seqS.find(..). Danach guckt man ob die Suche erfolgreich war also >0 (s. Quellcode) und zeigt anschließend durch markieren des Elements und/oder ausgeben der Stelle in einem Lable lbPos. Also:

    Code: int pos = seqS.find( Integer.valueOf(tfEingabe.getText()) );

    if(pos>=0)
    {
       liAusgabe.select(pos);
       lbPos.setText("An der Stelle: "+pos);
    }
    else
       lbPos.setText("Nicht gefunden");



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum A-Welt Forum



    Ähnliche Beiträge wie "SuchCondition"