Und zwar, wieso kann man den Teil, der unter static void
meineMethode() steht, nicht in die main methode schreiben und
dafür die andere weglassen?
Können kann man das. Vermutlich könnte man selbst größte Programme vollständig in der main Methode programmieren.
Allerdings macht man das nicht.
Warum? Struktur!
Struktur bedeutet:
Aufteilung eines Programms in sinnvolle Einheiten.
Möglichst viele Einheiten (Methoden, Objekte) sind
nicht immer die beste Wahl.
Dafür gibt es leider keine goldene Regel, aber Hilfen:
Wenn der selbe Programmcode mehr als 1 mal verwendet wird, darf/sollte/muss man daraus eine eigene Methode erstellen.
Gleiches gilt für das Aufrufen von Methoden:
Wenn die selbe Methode mehr als 1 mal redundant aufgerufen wird (System.out.println ist NICHT redundant, da es einen Unterschied macht), darf/sollte/muss man eine lokale Variable einführen.
Ob man sich für „darf“, „sollte“ oder „muss“ entscheidet, ist eine Frage des Stils. Ich halt mich an „muss“, mit etwas „sollte“.
Für neue Klassen ist das noch schwierieger. Man kann für alles neue Klassen definieren. Oft genügt aber doch ein String oder gar ein int, long usw.
Bliebe noch Logging, Exception-Handling, Klassen, Kommentare, Dokumentation …
Hier halte ich mich an die Regel: Mache nur das, was Du machen musst. Und man muss, wenn es einen Vorteil bringt.
Schafft Übersichtlichkeit.
Je größer ein Programm wird, desto wichtiger wird die Aufteilung in sinnvolle Einheiten.
Kapselt Einheiten
Hier schaut man sich am besten vorhandene Klassen an. Z.B. String. Diese Klasse kann man prima verwenden. Wie sie die Daten verwaltet ist gekapselt. Da kommt man nicht ran, um etwas zu manipulieren und das ist gut so.
Gleiches wendet man an, wenn man Bibliotheken erstellt und diese anderen zur Verfügung stellt.
… aber zurück zur Frage.
Erweitere die Klasse doch um eine weitere Methode und noch eine usw…
Dann schaue Dir an, und frage Dich nochmals, ob Du den gesamten Code in main() haben möchtest.
Ja gut, jetzt habe ich das verstanden
Jetzt gibt’s noch folgende Aufgabenstellung:
Ändern Sie die Methode so ab, dass Ihr ein beliebiger Zahlenwert vom Typ int übergeben werden kann und überprüfen Sie Ihre Änderung(en).
Ich habe das Programm soweit fertig und wollte fragen, ob ich damit die Aufgabenstellung erfüllt habe.
public class Main {
static void meineMethode() {
int x;
String eingabe;
eingabe = JOptionPane.showInputDialog(„Bitte geben Sie die zu quadrierende Zahl ein“);
x = Integer.parseInt(eingabe);
x = (int) Math.pow(x, 2);
Okay, danke für die Hilfe.
Ich bin jetzt grade bei folgender Aufgabenstellung und wollte fragen, ob das in meinem Programm soweit richtig umgesetzt wurde:
Entfernen Sie die Anweisung System.out.println(…); und ändern Sie die Methode anschließend so ab, dass das Ergebnis der Berechnung als Wert vom Typ double zurückgegeben wird.
Welche Änderungen müssen nun in der main-Methode vorgenommen werden, damit das Programm das Ergebnis der Berechnung wieder ausgeben kann? Nehmen Sie diese Änderungen vor und geben das Ergebnis auf dem
Bildschirm aus.
public class Main {
public static void meineMethode(double Konstante) {
double x = Konstante;
so ganz kann ich das von Dir beschriebene Problem nicht nachvollziehen. Ich habe testweise eine Klasse erstellt und den Code der Methode „meineMethode()“ in die main()-Methode kopiert:
public class Main {
public static void main(String[] args) {
int x = 5;
x = (int) Math.pow(x, 2);
System.out.println(„Der Wert von x“ + (char) 253 + „beträgt“ + x);
}
}
Das führte dann zur gleichen Ausgabe wie der von dir gepostete Code:
„Der Wert von xýbeträgt25“
Vielleicht kannst Du deine Fehlermeldung etwas präzisieren und die Ausgabe vom Compliler (StackTrace) posten.
Habe ich bereits, jetzt klappt’s
Nun muss ich noch folgende Aufgabenstellung bearbeiten:
Entfernen Sie die Anweisung System.out.println(…); und ändern Sie die Methode anschließend so ab, dass das Ergebnis der Berechnung als Wert vom Typ double zurückgegeben wird.
Welche Änderungen müssen nun in der main-Methode vorgenommen werden, damit das Programm das Ergebnis der Berechnung wieder ausgeben kann? Nehmen Sie diese Änderungen vor und geben das Ergebnis auf dem
Bildschirm aus.
Ist das so richtig?
public class Main {
public static void meineMethode(double xKonstante) {
double x = xKonstante;
tut mir leid für meine Verspätung. Bin gerade ein wenig im Stress und habe vergessen Dir zu antworten.
Die Änderungen könnten so aussehen:
public static double meineMethode(double xKonstante){
return (int) Math.pow(x, 2);
}
public static void main(String[] args) {
System.out.println(meineMethode(2));
}
Ich habe das Schlüsselwort void in der Methodendeklaration von meineMethode durch double ersetzt. Das ist der Rückgabetyp. Wichtig ist noch dass die Methode nun ein Ergebnis berechnet und dieses sofort mittels „return“ an die aufrufende Methode zurückliefefert. Das ist in diesem Fall die Methode main(). Diese benutzt die Rückgabe um sie auf der Console anzuzeigen.
Ich hoffe ich konnte Dir trotz Verspätung noch rechtzeitig helfen. Sorry nochmal wegen der Verspätung.