Verfügbare Informationen zu "SuchCondition"
Qualität des Beitrags: 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:35SuchCondition
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"