Programm compilierbar aber nicht ausführbar...

Kiga Man

Mitglied
Das Programm soll folgendes machen:
• Besitzt das Feld arr mindestens ein Element und eine ungerade Länge, soll apply das Produkt aus dem Wert von x und dem Inhalt des mittleren Elements von arr zurückgeben.
• Besitzt das Feld arr keine Elemente oder eine gerade Länge, soll apply den Wert null zurückgeben.

Das Programm abc ist wie im Themenbereich erwähnt compilierbar , aber er führt das Programm nicht aus . Bin am Ende mit meinem Latein. Kann mir jemand weiterhelfen? PS: Im Anhang befindet sich die Klasse , von der abc erbt

Das ist die Klasse abc mit der Methode apply :
public class abc extends Fraction
{
public static Fraction apply( Fraction[] arr, Fraction x )
{
if(arr.length>0 && arr.length%2==1){
int i = arr.length/2;
Fraction n= arr;
return x.multiply(n);

}
else{
return null;
}

}
}
 

Anhänge

Hier weitere Anmerkungen zum Code.

Java:
public class abc extends Fraction // Klassen schreibt man groß und dann CamelCase. Hier wäre sowas richtig wie "FractionUtil".
{
    public static Fraction apply( Fraction[] arr, Fraction x )
    {
        if(arr.length > 0 && arr.length % 2 == 1){
            int i = arr.length/2
            Fraction n= arr[i]; // hier fehlte das [i] vermutlich. Wegen BB Code. Daher dachte ich mir "huch, ist doch nicht kompilierbar.
            return x.multiply(n);
        }
        else {
            return null;
        }
    }
}
 
Gibt es denn auch eine main() Methode irgendwo, die diese Klasse verwendet?
ne leider nicht .
Hier weitere Anmerkungen zum Code.

Java:
public class abc extends Fraction // Klassen schreibt man groß und dann CamelCase. Hier wäre sowas richtig wie "FractionUtil".
{
    public static Fraction apply( Fraction[] arr, Fraction x )
    {
        if(arr.length > 0 && arr.length % 2 == 1){
            int i = arr.length/2
            Fraction n= arr[i]; // hier fehlte das [i] vermutlich. Wegen BB Code. Daher dachte ich mir "huch, ist doch nicht kompilierbar.
            return x.multiply(n);
        }
        else {
            return null;
        }
    }
}

Jo , beim Reinkopieren ist iwas schiefgelaufen . Ist jetzt compilierbar , aber trotzdem nicht ausführbar .
Wenn ich bei BlueJ die Brüche eingebe und das Programm ausführen will , kommt die Antwort
Error : incompatible types : int cannot be converted to Fraction
 
Keine main Methode
wo kommen denn die Parameter der Methode dann her? wenn keine Main vorhanden ist die das mit den Parametern aufruft .
 
Das Problem ist, dass in blueJ die Programme ausgeführt werden und man dann pro Methode einen Wert eingeben kann.

Aber eben nur Strings, int oder Double.

BlueJ ruft dann direkt die Methode auf. Du kannst aber ein Arrays aus Fractions nicht als int angeben.
 
Das Problem ist, dass in blueJ die Programme ausgeführt werden und man dann pro Methode einen Wert eingeben kann.

Aber eben nur Strings, int oder Double.

BlueJ ruft dann direkt die Methode auf. Du kannst aber ein Arrays aus Fractions nicht als int angeben.

Beispiele sind in der Aufgabenstellung angegeben , wie die Argumente und die zugehörigen Ergebnisse aussehen müssen .


Argumente
arr: {1/1,1/2,1/3,1/4,1/5,1/6} x: 1/7 Erwartete Rückgabe : null
Argumente arr: {1/1,1/2,1/3,1/4,1/5} x: 6/5 Erwartete Rückgabe :2/5
Argumente arr: {1/5,1/6} x: 1/2 Erwartete Rückgabe : null
 
für deine 4. Aufgabe etwa so
Java:
  public static void main(String[] args) {
      
        Fraction[] arr4 = {new  Fraction(1, 5)};
        Fraction x4 = new Fraction(2,7);
               
        Farcrtion result = apply(arr4, x4);
       
        }
 
Grundsätzlich funktioniert die apply-Methode (mit einigen Erweiterungen aus diesem Thread) i.V. mit einer (main)-Methode:


BlueJ_Fraction.JPG
 

Zurück
Oben