Geometrische Berechnungen

Shareyna

Neues Mitglied
Hallo, wir brauchen Hilfe.
Wir müssen eine Java Datei erstellen, in der wir das Volumen einer Pyramide und das Volumen einer Kugel berechnen.

Java:
public static double volumenKugel(double r) {
     // TODO:
     double volumenKugel = Math.PI * r* r*r*(4/3);
     return volumenKugel;
  
  public static double volumenPyramide(double a, double h) {
     // TODO:
     double volumenPyramide = (1/3)*(a*a *h);
     return volumenPyramide;

Es wurde mit folgenden Zahlen getesten: r=42.0815_4711_666 und bei uns kommt da 234112.69649376033 raus und sollte aber 312150.2619916804.
Und bei a= 4711.0815666d und h= 42.4711d kommt bei uns 0 raus, was auch nicht stimmt anscheinend.
Wir sitzen jetzt schon Stunden daran und kommen nicht auf die Lösung, wäre schön, wenn uns jemand helfen könnte.

Danke im Voraus
Liebe Grüße
 
Zuletzt bearbeitet von einem Moderator:

Tobse

Top Contributor
In Java ist 4/3 = 1 und 1/3 = 0 (Divison von zwei Ganzzahlen => Ganzzahldivision ohne Rest); ihr müsst die erst zu float oder double casten.
 
X

Xyz1

Gast
Machts einfach so:
Java:
    public static void main(String[] args) {
        System.out.println(volumenKugel(5));
        // 523.5987755982989
        // Referenz: 523.599

        System.out.println(volumenPyramide(4, 3));
        // 16.0
        // Referenz: 16
    }

    public static double volumenKugel(double r) {
        double volumenKugel = Math.PI * r * r * r * 4.0 / 3.0;
        return volumenKugel;
    }

    public static double volumenPyramide(double a, double h) {
        double volumenPyramide = a * a * h / 3.0;
        return volumenPyramide;
    }

(Durch Umstellen der Formel(n) konnte ich jetzt kein genaueres Ergebnis erreichen.)
 

kaporalix

Mitglied
wie Tobse geschrieben hat, ihr musst die Integer devision in float / double devison umwandeln.
also statt 4/3 eher 4.0/3.0 und bei 1/3 eher 1.0/3.0
 

kaporalix

Mitglied
z.B:

Java:
public class Test {
    public static void main(String[] args) {
        System.out.println(volumenKugel(42.0815_4711_666));
        System.out.println(volumenPyramide(4711.0815666d, 42.4711d));
    }
   
    public static double volumenKugel(double r){
       
        double volum = Math.PI * r * r * r * (4.0/3.0);
       
        return volum;
    }

    public static double volumenPyramide(double a, double h){
        double volum = (1.0/3.0) * (a * a * h);
        return volum;
    }
}
Ausgabe:
312150.2619916804
3.142052966456311E8
 

Flown

Administrator
Mitarbeiter
Grundsätzlich kann man 3.0 mit einem double literal schreiben 3d. Dann noch die unnötigen Variablen inlinen und dann sieht der Code so aus:
Java:
public static double volumenKugel(double r) {
  return Math.PI * r * r * r * 4d / 3d;
}

public static double volumenPyramide(double a, double h) {
  return a * a * h / 3d;
}
 

Ähnliche Java Themen

Neue Themen


Oben