0 Daumen
120 Aufrufe

Hallo Community,

ich bin gerade dabei Polymorphie mir wieder beizubringen und habe das folgendermaßen versucht:

public class Klausurvorbereitung {
    static class Figur {
        void getArea() {}
    }

    static class dreieck extends Figur {
        double area = 0;
        double ground = 0;
        double height = 0;

        void setArea() {
            this.area = (1/3)*ground*height;;
        }

        void setGround(int x) {
            this.ground = x;
        }

        void setHeight(int y) {
            this.height = y ;
        }

        void getArea() {
            System.out.println(area);
        }
    }

    public static void main(String[] args) {
        dreieck d = new dreieck();

        d.setGround(2);
        d.setHeight(4);
        d.setArea();
        d.getArea();
    }
}

Leider funktioniert der Code nicht und warum muss ich laut IDE static class .. verwenden?

von

Da Java eine OOP ist, würde ich zu nicht-statischen Klassen raten.

Das würde auch dein Problem lösen:

Von statischen Klassen kannst du kein Objekt erstellen. Das machst du aber in der Main-Methode.

Ebenso ist die Klasse Klausurvorbereitung in diesem Sinne eher das Package, in dem die Figuren Klassen liegen. Der Übersicht halbe würde ich auch nur eine Klasse pro Datei hinterlegen, wenn es nicht wichtig ist, dass die Klasse private ist.


Beste Grüße

Felix

Alles klar mache ich danke für den Tipp

Leider funktioniert der Code nicht

Fehlerbeschreibungen bei Programmierproblemen sollten aus mindestens drei Teilen bestehen:

  1. Was hast du gemacht?
  2. Was hast du erwartet was dadurch passiert?
  3. Was ist tatsächlich passiert?
(1/3)*ground*height

Das ist das Volumen eines Kegels oder einer Pyramide mit Grundfläche ground und Höhe height.

1 Antwort

0 Daumen
 
Beste Antwort
(1/3)*ground*height

1 ist vom Typ int, also eine ganze Zahl. 3 ist vom Typ int, also eine ganze Zahl. Das Ergebnis ist deshalb auch vom Typ int, also eine ganze Zahl. Teilt man 1 ganzzahlig durch 3, dann ist das Ergebnis 0.

Verwende stattdessen

1.0/2.0*ground*height

von 2,0 k

Ah vielen Dank. Ich dachte weil ich als Output schon double erzeuge wird das automatisch double. Fürs nächste Mal weiß ich jetzt Bescheid vielen Lieben Dank! Schönen Abend noch!

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage sofort und kostenfrei

x
Made by a lovely community