IntelliJ IDEA Community Edition

FinnJ

Mitglied
Hallo,
ich wage gerade meine ersten Schritte in IntelliJ und komme insgesamt recht gut zurecht, allerdings verstehe ich einfach nicht (und finde dazu auch kein Video), wie ich Methoden, welche nicht die static main methode sind, ausführen kann?

Java:
package Main.Liste;

public class Liste {
    
    Listenelement anfang;
    
    
    public static void main (String[] args) {
        System.out.println("Starting");
    }
    
    Liste () {
        anfang = new Abschluss();
        
    }
    
    public void HintenEinfuegen (Datenelement d) {
        anfang.HintenEinfuegen(d);
    }
    
    public void VorneEinfuegen (Datenelement dNeu) {
        Knoten kNeu = new Knoten(dNeu, anfang);
        kNeu.nachfolger = anfang;
    }
    
}

An sich funktioniert das Programm nämlich, aber ich weiß nicht wie ich z.B. die Methode "HintenEinfuegen" aufrufen kann?
 
im regelfall exakt so wie du es bei dem abschluss gemacht hast und wahrscheinlich genauso wie du es die anderen 10000 mal gemacht hast
Java:
    public static void main (String[] args) {
        System.out.println("Starting");
        Liste liste = new Liste();
    }
 
im regelfall exakt so wie du es bei dem abschluss gemacht hast und wahrscheinlich genauso wie du es die anderen 10000 mal gemacht hast
Java:
    public static void main (String[] args) {
        System.out.println("Starting");
        Liste liste = new Liste();
    }
Tut mir leid ich stehe gerade glaube ich etwas auf dem Schlauch. Wenn ich ein Objekt erzeuge, indem ich es in die static main Methode schreibe, dann wird das ja beim starten vom Programm erzeugt, allerdings bin ich dann ja in diesem Screen. Wie rufe ich von hier aus eine Methode auf?1649847313016.png
 
Jedes Java-Programm startet _immer_ von der public static void main Methode einer Klasse.
Es ist ja dann völlig dir überlassen, was diese main Methode tun soll.
Du kannst innerhalb dieser main Methode ja andere Methoden aufrufen.
Oder anders gesagt: _Alles_, was dein Programm tun soll, muss _irgendwie_ von dieser main-Methode ausgehen.

Aus der Art, wie du deine Frage formulierst, klingt es so, als wolltest du eher eine interaktive REPL (Read-Eval-Print-Loop) haben. Sowas gibt es z.B. mit der JShell.
 
Java:
 public static void main (String[] args) {
        System.out.println("Starting");
        Liste liste = new Liste();
        liste.HintenEinfuegen (dein Datenelement );
    }

PS . Methoden schreibt man klein
 
public void HintenEinfuegen (Datenelement d) {
anfang.HintenEinfuegen(d);
}
frage gibt es auch in der Klasse "Datenelement" eine Methode "Hinteneinfügen" die gibt es doch in der Klasse "List"


Jetzt siehst du auch warum man Methoden klein und Klassen groß schreibt.

Listenelement anfang;
.....
anfang = new Abschluss();
glaube nicht das das OK ist
Die DatenTypen passen eigentlich nicht.


Ist die "main" Methode in der Klasse "List" wirklich deine echte main Methode?
 
Zuletzt bearbeitet:
Jedes Java-Programm startet _immer_ von der public static void main Methode einer Klasse.
Es ist ja dann völlig dir überlassen, was diese main Methode tun soll.
Du kannst innerhalb dieser main Methode ja andere Methoden aufrufen.
Oder anders gesagt: _Alles_, was dein Programm tun soll, muss _irgendwie_ von dieser main-Methode ausgehen.

Aus der Art, wie du deine Frage formulierst, klingt es so, als wolltest du eher eine interaktive REPL (Read-Eval-Print-Loop) haben. Sowas gibt es z.B. mit der JShell.
Ahh okay, also kann ich nicht nachdem ich die Main methode gestartet habe einzelne Methoden aufrufen, sondern muss diese Methoden schon in die Main Methode schreiben um sie aufzurufen
 
frage gibt es auch in der Klasse "Datenelement" eine Methode "Hinteneinfügen" die gibt es doch in der Klasse "List"


Jetzt siehst du auch warum man Methoden klein und Klassen groß schreibt.


glaube nicht das das OK ist


Ist die "main" Methode in der Klasse "List" wirklich deine echte main Methode?
Nein, Datenelement ist nur ein interface, welches von der Klasse Knoten verwaltet wird und die Klasse Knoten extended die abstrakte Klasse Listenelement. Dass ich Klassen in Caps schreibe hatte ich mir eigentlich mal angewöhnt, aber heute hab ich irgendwie aus Faulheit alles klein geschrieben.. war wahrscheinlich ein Fehler :/
 

Anhänge

  • 1649850879979.png
    1649850879979.png
    84,8 KB · Aufrufe: 3
so wie du die Methoden geschrieben hast ist es pascal case und das macht man in c# bei Methoden aber nicht in java.. da ist es camel case
 
blue j ist für Anfänger geeignet

aber du willst ja professionell sein
An sich will ich das schon auf einem professionellerem Level machen, allerdings merke ich auch, dass das nicht gerade leicht ist. BlueJ war halt extrem leicht, man konnte die klassen einzeln erzeugen und dann mit rechtsklick die methoden einzeln aufrufen, aber ich finde die Fehler die man eventuell macht werden bei intelliJ besser dargestellt, da fällt es einem viel leichter die zu lösen
 
bluej ist halt dafür gemacht daß ein Anfänger schnell was zu sehen bekommt... intellij ist gemacht für Programmierer


das was du programmiert hast sieht nicht falsch aus, dir fehlt Grundwissen das du noch nicht gelernt hast aber jetzt kannst du es ja nach holen
 
bluej ist halt dafür gemacht daß ein Anfänger schnell was zu sehen bekommt... intellij ist gemacht für Programmierer


das was du programmiert hast sieht nicht falsch aus, dir fehlt Grundwissen das du noch nicht gelernt hast aber jetzt kannst du es ja nach holen
Werde ich machen, muss mich jz leider noch die nächsten Wochen aufs Abi konzentrieren aber danach werde ich mich mal richtig einlesen und das gescheit üben.
Danke für die Hilfe!
 
bluej ist halt dafür gemacht daß ein Anfänger schnell was zu sehen bekommt... intellij ist gemacht für Programmierer


das was du programmiert hast sieht nicht falsch aus, dir fehlt Grundwissen das du noch nicht gelernt hast aber jetzt kannst du es ja nach holen
Da hätte ich jetzt doch noch eine Frage, welche IDE sollte ich benutzen, wenn ich wie in diesem Fall eine Liste erzeugen will und die Methoden dieser testen will? BlueJ funktioniert zwar, allerdings finde ich die Farbgebung nicht so toll, da gefällt mir die von z.B. IntelliJ bei weitem besser.
 
Da hätte ich jetzt doch noch eine Frage, welche IDE sollte ich benutzen, wenn ich wie in diesem Fall eine Liste erzeugen will und die Methoden dieser testen will? BlueJ funktioniert zwar, allerdings finde ich die Farbgebung nicht so toll, da gefällt mir die von z.B. IntelliJ bei weitem besser.
Die IDE ist doch nur ein Hilfsmittel zur Programmierung. Es ist egal, welche du verwendest. Du kannst auch einen einfachen Texteditor hernehmen.
Java:
package Main.Liste;

public class Liste {
   
    Listenelement anfang;
   
   
    public static void main (String[] args) {
        System.out.println("Starting");
        Liste meineListe = new Liste(); // hier wird eine Liste erzeugt.
       
        meineListe.HintenEinfuegen(...); // und da wird sie verwendet
       
        // .. hier kommt der Rest des Programms, das die Liste verwendet
    }
   
    Liste () {
        anfang = new Abschluss();
       
    }
   
    public void HintenEinfuegen (Datenelement d) {
        anfang.HintenEinfuegen(d);
    }
   
    public void VorneEinfuegen (Datenelement dNeu) {
        Knoten kNeu = new Knoten(dNeu, anfang);
        kNeu.nachfolger = anfang;
    }
   
}


Ein guter Ansatz wäre es eine separate Hauptklasse (mit der main() Methode) zu erstellen und dort die Klasse Liste zu verwenden (wie oben gezeigt). In der Klasse Liste kann dann die main() Methode entfallen. Später werden deine Programme ja noch viel mehr Klassen haben, da ist es sinnvoll, gleich sauber zu trennen.
 
Die IDE ist doch nur ein Hilfsmittel zur Programmierung. Es ist egal, welche du verwendest. Du kannst auch einen einfachen Texteditor hernehmen.
Ich weiß, aber ich frage deshalb, da mir BlueJ von der Farbgebung nicht allzu gut gefällt, ich aber den Umgang damit sehr gerne mag. Beispielsweise, dass man Methoden direkt nach dem Erstellen eines Objekts aufrufen kann und diese somit einzeln testen kann. Würde dir da eine Alternative einfallen die recht ähnlich zu handhaben ist?
 
Ich weiß, aber ich frage deshalb, da mir BlueJ von der Farbgebung nicht allzu gut gefällt, ich aber den Umgang damit sehr gerne mag. Beispielsweise, dass man Methoden direkt nach dem Erstellen eines Objekts aufrufen kann und diese somit einzeln testen kann. Würde dir da eine Alternative einfallen die recht ähnlich zu handhaben ist?
Vergiss das, was BlueJ da macht. Das ist nur eine Krücke für den Anfang und wird dir später nie wieder so begegnen.

Einzeln testen kannst du sie auch, du musst sie halt einzeln z. B. in der main() Methode aufrufen.
 
Hier mal ein Beispiel, wie ich das meine. In IntelliJ erstellst du dazu zwei Klassen.
Java:
// Hauptklasse
public class HelloWorld {
 
    public static void main(String[] args) {
        Greeter greeter = new Greeter();
        greeter.greet(); // aufrufen (testen) der Methode greet()
    }
}
Java:
// Weitere Klasse
public class Greeter {
 
    public void greet() {
        System.out.println("Hallo Welt!");
    }
}

Gestartet wird immer über die main() Methode der Hauptklasse, egal wie viele weitere Klassen es noch gibt. In der Hauptklasse und mittels der main() Methode, wird alles "zusammen gebaut".
 
Hier mal ein Beispiel, wie ich das meine. In IntelliJ erstellst du dazu zwei Klassen.
Java:
// Hauptklasse
public class HelloWorld {
 
    public static void main(String[] args) {
        Greeter greeter = new Greeter();
        greeter.greet(); // aufrufen (testen) der Methode greet()
    }
}
Java:
// Weitere Klasse
public class Greeter {
 
    public void greet() {
        System.out.println("Hallo Welt!");
    }
}

Gestartet wird immer über die main() Methode der Hauptklasse, egal wie viele weitere Klassen es noch gibt. In der Hauptklasse und mittels der main() Methode, wird alles "zusammen gebaut".
Okay, also das was BlueJ quasi für mich alles gemacht hat muss ich jetzt selber machen indem ich erstmal (beim Beispiel der Liste) ein Datenelement erstelle und damit dann die Methode aufrufe und zum testen dann am besten noch mir irgendwie den Knoten der jetzt am Anfang der Liste ist returne.
Ist ja recht logisch soweit, mal schauen wo ich demnächst dran hängen bleib😆
 

Zurück
Oben