Wie kann ich etwas vor der Main-Methode ausführen?

byRacky

Mitglied
Hallo zusammen,

ich würde gerne wissen, ob es eine Möglichkeit gibt, etwas vor der Main-Methode auszuführen, anders gesagt, gibt es bei dem Folgendem Programm Code eine Möglichkeit, dass der Code funktioniert, ohne das ich etwas an der Main Methode ändere?
Ich hoffe auf Antworten, danke.


Code:
public class Mann {
   
     int größe;
     int gewicht;

   
     public static void main(String[] args) {
    
      int bmi = berechneBMI(größe,gewicht); 
       
    }
    
     int berechneBMI(int größe,int gewicht){
         return (1);
     }
}
 
Zuletzt bearbeitet von einem Moderator:
Ja, man kann etwas vor der Main-Methode ausführen, und Nein, das will man nahezu nie 😉

In dem Code müsste man auch nicht wirklich „Code ausführen“, den Fehler, den der Compiler meldet zu beheben reicht erstmal.
 
Such mal nach static initializer block, aber das beantwortet deine Frage noch nicht. Der Code müsste zunächst semantisch/syntaktisch korrekt sein.
 
Ein kleiner Tipp nebenbei noch: Vermeide in deinen Programmen die deutschen Umlaute. Das kann zu Problemen führen. Also anstatt von "größe" ist die bessere Lösung "groesse". Möglicherweise ist es aber auch sinnvoll, sich gleich an Englisch zu gewöhnen, weil das in der Softwareentwicklung Standard ist => "size".

Ansonsten, ja - du kannst an der Klasse etwas ändern, um die gegebene main() ausführen zu können. Schau dir dazu an, was der Compiler als Fehler meldet und frag nach, wenn du nicht weiter kommst.

Such mal nach static initializer block
Danach solltest du erst mal nicht suchen, weil das für dich hier nicht relevant ist und dich evtl. nur verwirrt.

Aber das hat @BestGoalkeeper auch dazu geschrieben, dass es deine Frage nicht beantworten wird.
 
Zuletzt bearbeitet:
[CODE lang="java" highlight="3-8, 16"]public class Mann {

static int größe;
static int gewicht;
static {
größe = 2;
gewicht = 80;
}

public static void main(String[] args) {

int bmi = berechneBMI(größe, gewicht);

}

static int berechneBMI(int größe, int gewicht) {
return (1);
}
}[/CODE]
Das sind die minimalen, vorzunehmenden Änderungen. LG! 🙂
 
[CODE lang="java" highlight="3-4, 12"]public class Mann {

static int größe = 2;
static int gewicht = 80;

public static void main(String[] args) {

int bmi = berechneBMI(größe, gewicht);

}

static int berechneBMI(int größe, int gewicht) {
return (1);
}
}
[/code]

Das sind die minimaleren minimalen, vorzunehmenden Änderungen. LG! 🙂
 
Zuletzt bearbeitet von einem Moderator:
Naja aber er hat explizit danach gefragt, wie er Code vor der main ausführen kann...
 
Muss man den beiden statischen Klassenvariablen eigentlich einen initialen Wert zuweisen? Die Methode gibt ja sowieso immer 1 zurück
 
Ja das schon, aber hier sollen sie ja mit sinnvollen Werten gefüttert werden.
Da die Werte nicht benutzt werden, ist es irrelevant.

Daher wäre meine minimale Lösung sogar ein einfaches:
Java:
public class Mann {
    public static void main(String[] args) { }
}

Die Funktionalität wäre da ja identisch ...
 
Nu ja, berechneBMI() könnte man ja als Art Mockup Methode ansehen, von daher würde ich dem Patienten nicht gleich alle Innereien entnehmen. 😱
 
Dann sind das die drei notwendigen Änderungen, damit die main() ausgeführt werden kann, wenn wir hier schon dabei sind, dem TE das Denken abzunehmen 😉
[CODE lang="java" highlight="3,4,12"]public class Mann {

static int größe;
static int gewicht;

public static void main(String[] args) {

int bmi = berechneBMI(größe, gewicht);

}

static int berechneBMI(int größe, int gewicht) {
return (1);
}
}[/CODE]
 
Vielen Dank für die Vielen Antworten, genau das mit dem static vor Variable und und Methode habe ich gesucht, mir ist bewusst das das logisch alles kein Sinn ergibt, aber das war ja auch nicht meine Frage, aber trotzdem danke, manchmal möchte man halt einfach mal sein Wissen weitergeben, ohne das danach gewünscht wird 🙂
 
Vielen Dank für die Vielen Antworten, genau das mit dem static vor Variable und und Methode habe ich gesucht, mir ist bewusst das das logisch alles kein Sinn ergibt, aber das war ja auch nicht meine Frage, aber trotzdem danke, manchmal möchte man halt einfach mal sein Wissen weitergeben, ohne das danach gewünscht wird 🙂
Allerdings ist deine Frage damit nicht wirklich beantwortet, Code wird damit nämlich nicht wirklich „vor der Main“ ausgeführt
 
Vielen Dank für die Vielen Antworten, genau das mit dem static vor Variable und und Methode habe ich gesucht, mir ist bewusst das das logisch alles kein Sinn ergibt, aber das war ja auch nicht meine Frage, aber trotzdem danke, manchmal möchte man halt einfach mal sein Wissen weitergeben, ohne das danach gewünscht wird 🙂
Weißt du denn auch warum durch diese Änderungen die main() ausführbar ist?
 
Static heißt, dass es Klassenvariablen bzw. Klassenmethoden sind, die ohne eine Instanz der Klasse existieren.
Im Gegensatz dazu die ursprüngliche Version des Codes. Da hat es sich um Instanzvariablen, bzw. -methoden gehandelt und für diese muss zwingend eine Instanz der Klasse (Mann) existieren, um sie verwenden zu können.

Das solltest du verstehen, denn das ist vermutlich das Lernziel der Übung. Falls nicht, dann frag hier lieber noch mal nach.
 

Neue Themen


Zurück
Oben