Körper Brechnung - Lokale Variablen in Methoden übergeben

theqwe

Aktives Mitglied
Hallo zusammen,

wir haben folgende Aufgabe bekommen: Ein Nutzer soll für ein Zylinder den Radius und die Höhe eingeben. Danach werden Umfang, Oberfläche, Mantelfläche, Deckenfläche und Volumen berechnet. Jede Rechnung soll eine eigene Methode besitzen und aus der main-Methode aufgerufen werden.
Soweit habe ich das auch hinbekommen. Aber da ich das ganze effizient gestalten möchte, kann ich für manche Berechnungen die Werte ja übernehmen, z.B. ergibt sich die Mantelfläche aus dem Umfang * Höhe. So möchte ich gerne den Wert von Umfang übernehmen und in der Methode benutzen. Sonst müsste ich ja die komplette Rechnung wieder eingeben.

Wie nehme ich den Wert von der Umfang-Rechnung und nutze ihn für die Mantelfläche-Rechnung?

Java:
package VL03;

import java.util.Scanner;
import java.math.*;

public class Dosenberechnung {

    public static void main(String[] args) {
      
        Scanner eingabe = new Scanner(System.in);
        System.out.print("Bitte geben Sie den Radius ein: ");
        System.out.println();
        double radius = eingabe.nextDouble();
        System.out.print("Bitte geben Sie jetzt die Höhe ein: ");
        double höhe = eingabe.nextDouble();
      
        berechneUmfang(radius, höhe);
        berechneDeckenfläche(radius, höhe);
        berechneMantelfläche(radius, höhe);
        berechneOberfläche(radius, höhe);
        berechneVolumen(radius, höhe);

    }
  
    public static void berechneUmfang(double radius, double höhe) {

        double umfang = (2 * Math.PI) * radius;
        System.out.println("Der Umfang beträgt: " + umfang);
    }
  
    public static void berechneDeckenfläche(double radius, double höhe) {

        System.out.println("Die Deckelfläche beträgt: " + Math.PI * radius);
    }
  
    public static void berechneMantelfläche(double radius, double höhe) {

        System.out.println("Die Mantelfläche beträgt: " +  ); // Hier möchte ich die umfang Variable nutzen
    }
  
    public static void berechneOberfläche(double radius, double höhe) {

    }
  
    public static void berechneVolumen(double radius, double höhe) {

    }
}

Ich danke euch im Voraus ;)
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Du kannst in berechneMantelfläche einfach berechneUmfang aufrufen (wenn es dir um das Vermeiden von doppeltem Code ging.) :)
 

theqwe

Aktives Mitglied
Du kannst in berechneMantelfläche einfach berechneUmfang[/icode aufrufen] (wenn es dir um das Vermeiden von doppeltem Code ging.) :)

Hi danke für die schnelle Antwort. Wir sollen diese Struktur einhalten. Also jede Berechnung eine Methode und alle Rechnungen aus der main-Methode aufrufen. Ich möchte nur egen der Effizienz die schon vorhandenen Rechnung für die anderen Rechnungen nutzen. Sonst müsste ich bei der Mantelfläche wieder die Formel für den Umfang eingeben.
 

mrBrown

Super-Moderator
Mitarbeiter
Das widerspricht meiner Antwort doch gar nicht :)

Wenn es dir um "schnellere" Ausführung geht: dafür müsstest du entweder die Struktur zerstören (was du ja nicht darfst), oder statische Variablen nutzen (was du nicht solltest weil's hässlich ist).
 

theqwe

Aktives Mitglied
Ok, das habe ich dann wohl nicht ganz verstanden. Sind erst bei der 3. Vorlesung und kenne noch nicht so viele Sachen. Wie würde das mit statischen Variablen aussehen? Wir dürfen/sollen natürlich im Moment nur das verwenden, was wir schon gelernt haben :)
 

mihe7

Top Contributor
1. Deine Methoden machen zu viel, d. h. Dinge, sie enthalten Dinge, die dort nicht hingehören. Konkret: eine Methode berechneXXX soll etwas berechnen, aber nicht ausgeben
2. Wenn sie nichts ausgeben sollen, dann werden sie etwas zurückgeben müssen.
3. Die Rückgabewerte kannst Du dann für die Ausgabe und/oder weitere Berechnungen verwenden.

Deine Methoden würden sich dann ändern zu (beispielhaft):
Java:
public static double berechneUmfang(double radius, double höhe) {
    return (2 * Math.PI) * radius;
}
und in main
Java:
double umfang = berechneUmfang(radius, höhe);
System.out.println("Der Umfang beträgt: " + umfang);

double mantelflaeche = berechneMantelfläche(umfang, höhe); // Methode muss dann natürlich den Umfang und nicht den Radius erwarten
System.out.println("Die Mantelfläche beträgt: " + mantelflaeche);
 

mrBrown

Super-Moderator
Mitarbeiter
1. Deine Methoden machen zu viel, d. h. Dinge, sie enthalten Dinge, die dort nicht hingehören. Konkret: eine Methode berechneXXX soll etwas berechnen, aber nicht ausgeben
Oh, noch nicht mal 10 und ich bekomm trotzdem nichts mehr auf die Reihe... bis grad war ich der festen Überzeugung, dass die Methoden bereits die Sachen zurückgeben -.-
 

theqwe

Aktives Mitglied
Ok, vielen Dank. Dann versuche ich das mal so und hoffe, dass es dem Prof passt :)
Ich kann mich am Freitag nochmal melden und das Ergebnis mitteilen.
 

theqwe

Aktives Mitglied
Wir hatten return zum Schluss kurz angekratzt. Ich habe es jetzt so übernommen und es funktioniert sehr gut. Eigentlich soll man beim programmieren ja seine Freiheiten haben. Hauptsache man kommt zum Ziel.
Ich werde mich morgen melden und bescheid geben, ob alles nach seinen Wünschen war ;)
 

M.L.

Top Contributor
Eigentlich soll man beim programmieren ja seine Freiheiten haben.
Kleine Randbemerkung: die Programmiersprache Perl bietet so etwas (Motto: "There is more than one way to do it "). U.a. mit dem Nebeneffekt, dass es mehrere Wege zum Ziel geben kann oder man sich gründlich verlaufen kann.
Hauptsache man kommt zum Ziel.
Die Landkarte inkl. Abkürzungen und offizieller Wege sollte man trotzdem kennen, siehe das Openbook zu return, static
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Collector Klasse die mehrere Körper enthält Java Basics - Anfänger-Themen 2
S Verständnisfrage lokale Ordnerpfade Java Basics - Anfänger-Themen 1
P Variablen Wie kann ich eine lokale Variable in eine andere Methode einfügen? Java Basics - Anfänger-Themen 27
M Anonyme Klasse und lokale Variable Java Basics - Anfänger-Themen 2
B Lokale Datenbank Java Java Basics - Anfänger-Themen 2
A Variablen lokale Variable als private? Java Basics - Anfänger-Themen 3
C lokale Variable verwenden statt globale Java Basics - Anfänger-Themen 7
O Lokale Klassen Java Basics - Anfänger-Themen 15
D Von einer Methode auf eine lokale Variable in der Main zugreifen? Java Basics - Anfänger-Themen 15
A lokale Variable innerhalb "actionPerformed()" Java Basics - Anfänger-Themen 10
N Mit Kontrukor der Oberklasse lokale Variable initialisieren Java Basics - Anfänger-Themen 2
L Lokale Variable und Instanzvariable innerhalb Iterator Java Basics - Anfänger-Themen 8
J Instanzvariablen - Lokale Variablen - warum der Unterschied? Java Basics - Anfänger-Themen 5
M anonyme nicht-lokale Klassen Java Basics - Anfänger-Themen 13
T zugriff auf lokale variablen? Java Basics - Anfänger-Themen 6
M lokale exe-Datei über Java-Applet starten Java Basics - Anfänger-Themen 4
M lokale IP auslesen und auf URL weiterleiten Java Basics - Anfänger-Themen 8
Developer_X Batch Datei soll auf lokale JLibrary zugreifen Java Basics - Anfänger-Themen 11
hdi kleine Verständnisfrage lokale + Member Variable Java Basics - Anfänger-Themen 10
H Lokale Klassen und Zugriff. Java Basics - Anfänger-Themen 10
L Lokale Variablen automatisch durch Schleife erzeugen Java Basics - Anfänger-Themen 2
E Lokale variablen in methode Java Basics - Anfänger-Themen 6
C Nochmal zu lokale Einstellungen Java Basics - Anfänger-Themen 2
E Lokale Dateien ausführen, IE,FF Java Basics - Anfänger-Themen 3
P Unterschied lokale Variable und Instanzvariable Java Basics - Anfänger-Themen 2
roflomfg Text in eine lokale "*.txt-Datei" speichern Java Basics - Anfänger-Themen 9
7 Lokale Variablen, Klassenvariablen, Instanzvariablen Java Basics - Anfänger-Themen 15
K Lokale Variable in for Schleife Java Basics - Anfänger-Themen 5
S lokale Programme per Button starten Java Basics - Anfänger-Themen 4
G Auf lokale Variablen zugreifen Java Basics - Anfänger-Themen 5
P Lokale Dateien in Java-Applets einlesen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben