Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich stecke bei einer Aufgabe fest, ich hoffe, mir kann dabei jemand helfen. Ich soll die Methode compareTo() !umsetzen!. diese, gibt eine Schnittstelle zur verfügung. Diese Schnittstelle soll in einer Klasse implementiert werden. So weit, so gut. Jetzt kommt aber der Hänger bei mir. Die Methode soll ein Ordered-Objekt(Name der Schnittstelle) als parameter bekommen und gibt int zurück. Meine Frage: wie kann ich diese Vergleichen?
hab diese schon implementiert, aber da lacht Java, weil ich kann doch nur konstanten in Schnittstellen implementieren oder? Aber womit soll ich denn dann vergleichen?
Und ja, ich weis, dass es schon viele derartige Posts gab, aber die haben mir auch nihct weiter geholfen, ich hoffe ihr schaft das.
so weit bin ich,abgesehen von der main methode und so:
Java:
interface Ordered{
int compareTo(Ordered o);
}
class OrderedInteger implements Ordered{
int wert;
public OrderedInteger(int wert){ this.wert = wert;}
public int compareTo(Ordered o){
int rueck = 0;
if((o != null)&&(o instanceof OrderedInteger)){
if(this.wert < o.wert) rueck = -1;
if(this.wert > o.wert) rueck = 1;
else rueck = 0;
}
return rueck;
}
}
das werd ich dann auch hinzufügen. Das Problem ist aber trotzdem der Vergleich. Ich soll dann ein Array mit Ordered als Inhalt auf Maximum und Sortiert oder nicht Prüfen. Dazu brauch ich ja die compareTo-Methode. Aber ich sitzte echt aufm Schlauch, weil ich einfach nicht weis, wie ich es richtig implementiere.
und die zu prüfenden Werte sind ja auf jedenfall immer vom Typ Ordered, die geb ich später ja vor =)
Ich hab noch zwei Methoden, die bekommen (Ordered[] a) als Parameter. Eine gibt das Maximum an. die andere Prüft ob das Array sortiert ist. mehr nicht. und dafür benötige ich die compareTo Methode. habe aber null ahnung, wie ich vergleichen soll.
so z.B würde eine davon aussehen( so wie ich es mir jetzt gedacht habe). da stört aber, dass ich in der Schnittstelle nix implementieren kann. Keinen Konstruktor oder ähnliches. deswegen funktioniert auch nicht das
mit: a.wert
weil es wert ja gar nicht gibt. aber irgendwas brauche ich doch zum vergleichen oder nicht?
Java:
Ordered Max(Ordered []a){
int maxindex=0;
for(int i = 0; i < a.length;i++){
if(a[i].wert>a[i+1].wert) maxindex = i;
}
return a[maxindex];
}
Code wäre nicht schlecht und genauer Wortlaut der Fehlermeldung,
Methoden (und Variablen) nie großschreiben, sonst sind sie nicht von Klassen zu unterscheiden
wahrscheinlicher Fehler:
die main ist eine statische Methode, da kannst du nur andere statische Methoden aufrufen,
falls die aktuelle Klasse X heißt, geht auch:
also java nörgelt, dass es keine methode Max(Ordered) ind der Klasse Ordered[] findet. hab schon alles hin und her gecastet aber find den dreh irgedwie nicht raus..
das ist der aufruf
Java:
System.out.println("Max: "+ or.Max(or).wert);
und das ist der Rest des Programms:
Java:
interface Ordered{
int compareTo(Ordered o);
}
class OrderedInteger implements Ordered{
int wert;
public OrderedInteger(int wert){ this.wert = wert;}
public int compareTo(Ordered o){
int rueck = 0;
if((o != null)&&(o instanceof OrderedInteger)){
if(wert < ((OrderedInteger) o).wert) rueck = -1;
if(wert > ((OrderedInteger) o).wert) rueck = 1;
else rueck = 0;
}
return rueck;
}
}
class Ord{
public boolean isOrdered(Ordered[]a){
boolean rueck = true;
for(int i = 0; i < a.length;i++){
if(((OrderedInteger)a[i]).wert>((OrderedInteger)a[i+1]).wert) rueck = false;
}
return rueck;
}
public Ordered Max(Ordered []a){
int maxindex=0;
for(int i = 0; i < a.length;i++){
if(a[i].compareTo(a[i+1]) > 0) maxindex = i;
}
return a[maxindex];
}
}
Achja und wenn schon so ein Java-Guru online ist: du kennst dich nicht zufällig mit tiefem Kopieren aus oder?