Hausarbeit Java Trapez?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Am sinnvollsten wäre es, die Berechnung in eine Methode auszulagern. Das hat den Vorteil, dass man die Berechnung nicht jedes Mal neu programmieren muss, wenn man es für mehrere Werte ausgeben möchte.

Der Cast von einem Typ in einen anderen ist relativ einfach. Besonders bei den numerischen Typen wie Integer, Double, oder auch Float ist das einfach. Hier ein Beispiel, wie man Integer in Double umwandelt:

int myInt = 42;
double myDbl = (double)myInt;

Die Formel für die Fläche eines Trapezes ist wie folgt (musste ich ehrlich gesagt in meiner Formelsammlung nachsehen, ist bei mir ewig her):



A ist die Fläche

b ist die Breite

lm ist die mittlere Länge

Für die Breite und die mittlere Länge sollte deine Methode je einen Parameter vom Typ Integer erwarten. Die Berechnung kannst du entweder so umsetzen, dass das Ergebnis in einer Variablen gespeichert und dann zurückgegeben wird. Oder sofort in einer Zeile zurückgeben:

// Veriante 1:
int a = b * lm;
return (double)a;

// Variante 2:
return (double)(b * lm);

Hoffe, das hat dir geholfen. Falls du noch Fragen hast, frag ruhig nach. Wir alle haben mal klein angefangen ;-)

Woher ich das weiß:Studium / Ausbildung

anna0811 
Fragesteller
 05.11.2020, 14:13

Vielen lieben Dank schonmal für deine ausführliche Antwort! Ich habe eine andere Formel im Internet gefunden: (a+c)/2*h :o

Ich schicke mal rein was ich bis jetzt programmiert habe. Ich bekomme es nicht hin, dass er "-1.0" ausgibt, wenn ein Eingabeparameter <= 0 wäre. Mein Programm gibt mir dann immer den Flächeninhalt plus -1.0 aus. Und es kommt in Zeile "public static int trapezoidArea" immer der Fehler, dass der result type Int sein muss, aber das ist er doch?

Umgewandelt in double habe ich hier noch nicht.

public class Functionality {

public static void main(String[] args) {

System.out.println(trapezoidArea(0, 0, 0));

}

public static int trapezoidArea(int a, int c, int h) {

int result = ((a + c) / 2 * h);

if (a <= 0) {

System.out.println("-1,0");

} if (c <= 0) {

System.out.println("-1.0");

} if (h <= 0) {

System.out.println("-1.0");

} else {

return result;

}

}

}

0
RBM1992  06.11.2020, 11:11
@anna0811

Ich bekomme beim Compilieren (also beim Übersetzen des Java-Codes) die Fehlermeldung, dass ein return fehlt. In Jedem if-Zweig muss eine return-Anweisung stehen. Zudem solltest du besser mit if-else if-else arbeiten, da sich das else momentan nur auf den Fall

if(h <= 0)

bezieht. Sofern die Aufgabe nicht vorgibt, in jedem if die Ausgabe von -1.0 zu haben, solltest du das komplett auslassen, da es für das Programm unnötig ist (außer zu Testzwecken). Und die Berechnung solltest du nur dann durchführen, wenn kein Parameter 0 ist. Das spart - wenn auch wenig - Rechenzeit und -kapazität. Auch wenn das heutzutage relativ egal ist ;-)

Kennst du bereits logische Operatoren? Dann könntest du die Abfrage nach Null-Werten verkürzen, indem du die ifs mit dem logischen Oder verknüpfst:

if(a <= 0 || c <= 0 || h <= 0){
    return -1;
}
else{
    return result;
}
0