Hallo erstmal
Ich hab folgendes Program geschrieben und ich bekomme einen Fehler:
Ich weiss nicht was ich bei dem Fehler machen soll.
Wenn ich meine Testklasse aber loesche:
Da bekomme ich folgenden Fehler:
Also ich weiss, dass so was nicht erlaubt ist, weil OrderedInteger und ZweiMethoden verschieden klassen sind und zueinander nicht zugreifen koennen. Aber so stand es in der Aufgabenstellung. Die Methoden
sollen in eine eigene Klasse verpackt sein. Wie kann ich den diese beide Methoden in meine Mainmethode fuer objekte der Klasse OrderedInteger benutzen?
Vielen Dank im voraus.
Ich hab folgendes Program geschrieben und ich bekomme einen Fehler:
Java:
java.lang.NoSuchMethodError: main
Exception in thread "main"
Java:
class GeordneteObj {
public interface Ordered { int compareTo(Ordered o);}
class OrderedInteger implements Ordered {
protected int wert;
OrderedInteger(int x) { wert = x; }
public int getWert(){ return wert; }
public void setWert (int o){ wert=o;}
public int compareTo(Ordered o) {
OrderedInteger o1 = (OrderedInteger)o;
if (wert==o1.wert) return 0;
if (wert<o1.wert)
return -1;
else
return 1;
}
}
static class ZweiMethoden {
public static boolean isOrdered(Ordered []a){
for (Integer i = 0;i<a.length;i++){
if (i.compareTo(i) <= 0){
return false;
}
} return true;
}
public Ordered Max (Ordered []a){
Ordered max = a[0];
for (int i = 1;i<a.length;i++){
if (a[i].compareTo(max) > 0){
max=a[i];
}
}return max;
}
}
public static class TestKlasse{
public static void main(String[] args) {
OrderedInteger[] oi = new OrderedInteger[3];
oi[0]= new GeordneteObj().new OrderedInteger(1);
oi[1]= new GeordneteObj().new OrderedInteger(32);
oi[2]= new GeordneteObj().new OrderedInteger(26);
for (int i=0;i<oi.length;i++){
System.out.println("Maximum ist: " + ((ZweiMethoden) oi[i]).Max());
System.out.println("Sind die Elemente absteigend geordnet? " + ((ZweiMethoden) oi[i]).isOrdered()); }
}
}}
Wenn ich meine Testklasse aber loesche:
Java:
public static void main(String[] args) {
OrderedInteger[] oi = new OrderedInteger[3];
oi[0]= new GeordneteObj().new OrderedInteger(1);
oi[1]= new GeordneteObj().new OrderedInteger(32);
oi[2]= new GeordneteObj().new OrderedInteger(26);
for (int i=0;i<oi.length;i++){
System.out.println("Maximum ist: " + ((ZweiMethoden) oi[i]).Max());
System.out.println("Sind die Elemente absteigend geordnet? " + ((ZweiMethoden) oi[i]).isOrdered()); }
}
Da bekomme ich folgenden Fehler:
Java:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Cannot cast from GeordneteObj.OrderedInteger to GeordneteObj.ZweiMethoden
The method Max(GeordneteObj.Ordered[]) in the type GeordneteObj.ZweiMethoden is not applicable for the arguments ()
Cannot cast from GeordneteObj.OrderedInteger to GeordneteObj.ZweiMethoden
The method isOrdered(GeordneteObj.Ordered[]) in the type GeordneteObj.ZweiMethoden is not applicable for the arguments ()
at GeordneteObj.main(GeordneteObj.java:49)
Also ich weiss, dass so was nicht erlaubt ist, weil OrderedInteger und ZweiMethoden verschieden klassen sind und zueinander nicht zugreifen koennen. Aber so stand es in der Aufgabenstellung. Die Methoden
Java:
boolean isOrdered(Ordered []a)
//und
Ordered Max(Ordered []a)
Vielen Dank im voraus.