Java Backend

Maxel33

Aktives Mitglied
Hallo,

ich befasse mich nun schon seit längeren mit der Programmiersprache Java. Ich nutze dabei die Tutorial-Reihe "Java Leicht gemacht" von Christian Gesty auf Udemy. Ich bin jetzt beim Sortieren von Daten mit Comperator. Jedoch folgen darauf noch Java Lambdas, Innere und Anonyme Klassen, Threads und ein Exception Kurs. Ich habe nun schon soo viel Theorie in mich hinein gefressen und möchte nun auch langsam mal etwas selbst gestalten. Am liebsten Backend mäßig. Doch ich finde kaum etwas, was ich selbst machen kann bzw. überhaupt kann. Ich fühle mich irgendwie ein wenig blöd, da ich noch nichts wirklich alleine kann. Es heißt doch aber "learning by doing". Man verliert auch schnell den Spaß bei so viel Theorie ohne Bezug zur Praxis. Auf YouTube gibt es auch kaum Projekte etc.

Es wäre ultra nett, wenn ihr mir helfen könntet.

Liebe Grüße
 

M.L.

Top Contributor
Weiterhin ist Backend-Programmierung im Kern "nur" die interne (Weiter)Verarbeitung von Daten jedweder Art (setzt also weder den Einsatz von Frontends inkl. Controllern oder Datenbanken voraus). Der genannte Kurs ist für Backend aber weniger geeignet, obwohl Themen wie (z.B.) Threads, Exceptions, Datenstrukturen auch hier relevant sind.
 

Thallius

Top Contributor
Wo ist denn dein Problem? Fällt Dir nichts ein? Denk Dir irgendeine Software aus die Du gerne für Dich hättest und schreib sie dir. Am besten irgendwas das sich mit einem deiner Hobbies befasst. Ich habe damals ein Flugbuch fürs Gleitschirmfliegen geschrieben und eine App die meine gelesenen Bücher verwaltet. Sowas in der Art wird Dir ja wohl auch einfallen. Und wenn man es dann selber benutzt, dann macht es auch Spaß.
Wichtig ist nur, das die erste Version erstmal wirklich sehr Basic sein sollte. Fang nicht gleich an 1 Million Features zu überlegen die die Software haben muss sonst Verzweifelt man schnell
 

Maxel33

Aktives Mitglied
Wo ist denn dein Problem? Fällt Dir nichts ein? Denk Dir irgendeine Software aus die Du gerne für Dich hättest und schreib sie dir. Am besten irgendwas das sich mit einem deiner Hobbies befasst. Ich habe damals ein Flugbuch fürs Gleitschirmfliegen geschrieben und eine App die meine gelesenen Bücher verwaltet. Sowas in der Art wird Dir ja wohl auch einfallen. Und wenn man es dann selber benutzt, dann macht es auch Spaß.
Wichtig ist nur, das die erste Version erstmal wirklich sehr Basic sein sollte. Fang nicht gleich an 1 Million Features zu überlegen die die Software haben muss sonst Verzweifelt man schnell

Dankeschön für diese Antwort. Das Problem besteht darin, dass ich nicht weiß, wie ich eine Oberfläche erstellen kann und diese mit Java verknüpfe. Muss ich dort andere Programme nutzen? Hast du vielleicht einige Quellen zur Hand, die mir da helfen können?
 

Hag2bard

Bekanntes Mitglied
Ein offenbar langweiliges und simples Programm, wie z.b. eine Einkaufsliste, eine To-Do Liste oder ein Kalender kann, wenn man es man es dann mal tatsächlich zu seinem eigenem Projekt macht so umfangreich sein, dass man wirklich viel dabei lernt. Es werden Probleme auftauchen, an die man nicht gedacht hat. Die Komplexität ist doch höher als erwartet, was dich zwingt sauber zu programmieren.
Wenn du ein Reportair an Programmen geschrieben hast, kannst du alle in einer Benutzeroberfläche vereinen.
 

Thallius

Top Contributor
Du kannst natürlich das Frontend ebenso in Java machen. Dann hast du halt eine Client App die sich per HTTPRequest mit dem Backend verbindet.
Du kannst, wenn Du Spaß dran hast auch HTML und Javascript nehmen. Es ist jetzt kein Hexenwerk mit HTML ein Formular zu basteln, dass du dann per AJAX an dein Backend schickst und ebenso mit AJAX Daten vom Backend wieder abholst. Dann kannst du die App halt von jedem Rechner aus im Browser benutzen. Ist halt schöner.

Ich würde echt klein anfangen. Mach eine Springboot App die nichts weiter macht als mit einem Request irgendwelche Daten in JSON zu empfangen und in eine Datenbank zu schreiben.
Dann nimmst du z.B. Postman und schickst einfach mal Daten hin und liest sie wieder aus. Dabei lernst du wie sowas alles funktioniert. Danach kannst du dann statt Postman ein richtiges Frontend bauen.
 

mihe7

Top Contributor
Das Problem besteht darin, dass ich nicht weiß, wie ich eine Oberfläche erstellen kann und diese mit Java verknüpfe. Muss ich dort andere Programme nutzen? Hast du vielleicht einige Quellen zur Hand, die mir da helfen können?
@Maxel33, ich würde Dir vorschlagen, ein einfaches Projekt zu wählen und dieses ggf. mit Unterstützung aus dem Forum durchzuziehen. Wenn Du kein Thema hast, könntest Du einfach mal https://ccd-school.de/coding-dojo/application-katas/haushaltsbuch/ nehmen. Die Bedienung über die Befehlszeile kannst Du dabei erstmal vergessen (s. u.), es geht erstmal um das Haushaltsbuch selbst.

Versuche, ein objektorientiertes Modell dafür (oder für ein von Dir gewähltes Thema) zu entwerfen und wenn Du das hast, gibst Du Bescheid, ob Du
  • Frontend, Backend oder vollständige Anwendung
  • Desktop-, Web- oder mobile Anwendung
entwickeln willst. Dann kann man besser darauf eingehen.
 

Maxel33

Aktives Mitglied
Ein offenbar langweiliges und simples Programm, wie z.b. eine Einkaufsliste, eine To-Do Liste oder ein Kalender kann, wenn man es man es dann mal tatsächlich zu seinem eigenem Projekt macht so umfangreich sein, dass man wirklich viel dabei lernt. Es werden Probleme auftauchen, an die man nicht gedacht hat. Die Komplexität ist doch höher als erwartet, was dich zwingt sauber zu programmieren.
Wenn du ein Reportair an Programmen geschrieben hast, kannst du alle in einer Benutzeroberfläche vereinen.
Heyy, dankeschön für deine Antwort. Du meinst sicherlich, dass ich das Programm erstmal in der Konsole schreiben soll?

Liebe Grüße
 

Maxel33

Aktives Mitglied
@Maxel33, ich würde Dir vorschlagen, ein einfaches Projekt zu wählen und dieses ggf. mit Unterstützung aus dem Forum durchzuziehen. Wenn Du kein Thema hast, könntest Du einfach mal https://ccd-school.de/coding-dojo/application-katas/haushaltsbuch/ nehmen. Die Bedienung über die Befehlszeile kannst Du dabei erstmal vergessen (s. u.), es geht erstmal um das Haushaltsbuch selbst.

Versuche, ein objektorientiertes Modell dafür (oder für ein von Dir gewähltes Thema) zu entwerfen und wenn Du das hast, gibst Du Bescheid, ob Du
  • Frontend, Backend oder vollständige Anwendung
  • Desktop-, Web- oder mobile Anwendung
entwickeln willst. Dann kann man besser darauf eingehen.
Okay Dankeschön. So werde ich es machen. Wenn ich fertig bin, werde ich hier einmal den Code schicken.

Liebe Grüße

Maxi
 

Maxel33

Aktives Mitglied
Habe mich jetzt für ein TicTacToe in der Konsole entschieden. Nun habe ich schon das Spielfeld. Doch wie schafft man es die Eingabe des Users in die dafür vorgesehene Spalte des Arrays einzutragen.

Packe den Quellcode hinzu:

Java:
public class Main {

    public static void main(String[] args) {
       
        String[][] board = new String[3][3];
        board[0][0] = "  ";
        board[0][1] = "  ";
        board[0][2] = "  ";
        board[1][0] = "  ";
        board[1][1] = "  ";
        board[1][2] = "  ";
        board[2][0] = "  ";
        board[2][1] = "  ";
        board[2][2] = "  ";
       
        System.out.println(board[0][0] + "|" + board[0][1] + "|" + board[0][2]);
        System.out.println("-----");
        System.out.println(board[1][0] + "|" + board[1][1] + "|" + board[1][2]);
        System.out.println("-----");
        System.out.println(board[2][0] + "|" + board[2][1] + "|" + board[2][2]);
       
       
       


    }

}
 

mrBrown

Super-Moderator
Mitarbeiter
In dem Java-Kurs, den du genannt hast, kam da schon was zu Objekt-Orientiertem Design (oder ähnlichem) vor?
 
K

kneitzel

Gast
Paar Anmerkungen zu dem Code:

a) Versuche es doch bitte, objektorientiert anzugehen. Du hast also ein Board, welches dann Felder hat. Was für Werte kann denn ein Feld haben? Das ist doch nicht wirklich ein String. Ein Feld kann doch nur einen von 3 Werten annehmen - sowas klingt nach enum.

b) Deine Code-Zeilen gleichen sich sehr stark. Das ist in der Regel ein Zeichen für eine Doppelung:
Java:
        board[0][0] = "  ";
        board[0][1] = "  ";
        board[0][2] = "  ";
Ist also immer das Gleiche, nur eben dass da an einer Stelle von 0 bis 2 durchgezählt wird -> Schleife.
Das Gleiche dann noch mit den Blöcken - Du hast 3 Mal den Block und da wird wieder von 0 bis 2 gezählt ...

c) Wenn Du die Ausgabe dann auch separat hast, dann kannst Du den eigentlichen Spielablauf angehen. Das wäre dann aber auch wieder eine eigene Klasse. TicTacToe oder so. Da kannst Du dann die Abläufe entwickeln:
- Am Anfang wird ein Spielfeld erzeugt.
- Dann werden die Spieler abwechelnd nach einem Feld gefragt, verifiziert, ob die Auswahl gültig ist u.s.w.
 

Maxel33

Aktives Mitglied
Paar Anmerkungen zu dem Code:

a) Versuche es doch bitte, objektorientiert anzugehen. Du hast also ein Board, welches dann Felder hat. Was für Werte kann denn ein Feld haben? Das ist doch nicht wirklich ein String. Ein Feld kann doch nur einen von 3 Werten annehmen - sowas klingt nach enum.

b) Deine Code-Zeilen gleichen sich sehr stark. Das ist in der Regel ein Zeichen für eine Doppelung:
Java:
        board[0][0] = "  ";
        board[0][1] = "  ";
        board[0][2] = "  ";
Ist also immer das Gleiche, nur eben dass da an einer Stelle von 0 bis 2 durchgezählt wird -> Schleife.
Das Gleiche dann noch mit den Blöcken - Du hast 3 Mal den Block und da wird wieder von 0 bis 2 gezählt ...

c) Wenn Du die Ausgabe dann auch separat hast, dann kannst Du den eigentlichen Spielablauf angehen. Das wäre dann aber auch wieder eine eigene Klasse. TicTacToe oder so. Da kannst Du dann die Abläufe entwickeln:
- Am Anfang wird ein Spielfeld erzeugt.
- Dann werden die Spieler abwechelnd nach einem Feld gefragt, verifiziert, ob die Auswahl gültig ist u.s.w.

Ich habe es jetzt versucht mit einem enum. Wusste zuvor nicht, was das ist & auch jetzt funktioniert es nicht wirklich. Was mache ich falsch? :(

Java:
public class Main {

    public static void main(String[] args) {
        
        Eingabe[] array1 = new Eingabe[3];
        
        for(int i = 0; i < array1.length; i++) {
            System.out.print(array1[i]);
            if(i < 2) {
                System.out.print("|");
            }
        }
        


    }

}

Hier das Enum ->

Java:
public enum Eingabe {
    O,
    X,
    Nichts
 

}
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Am Anfang ist die objektorientierte Herangehensweise bestimmt schwer. Daher einfach einmal das, was ich oben geschrieben habe einmal etwas verdeutlicht mit Code (Im Forum geschrieben, daher ohne jede Syntax Überprüfung und so!):
Du hast also ein Board, welches dann Felder hat.
Das wäre also dann etwas wie:
Java:
public class Board {
    private Field[][] fields = new Field[3][3];
}
Ein Feld kann doch nur einen von 3 Werten annehmen - sowas klingt nach enum.
Java:
public enum Field {
    FIRST_PLAYER,
    SECOND_PLAYER,
    EMPTY;
}

Ist also immer das Gleiche, nur eben dass da an einer Stelle von 0 bis 2 durchgezählt wird -> Schleife.
Das kann man etwas aufzeigen bei der Klasse Board:
Java:
public class Board {
    private Field[][] fields = new Field[3][3];

    public Board() {
        for (int row = 0; row < fields.length; row++) {
            for (int column = 0; column < fields[row].length; column++) {
                fields[row][column] = Field.EMPTY;
            }
        }
    }
}
c) Wenn Du die Ausgabe dann auch separat hast, dann kannst Du den eigentlichen Spielablauf angehen.
Also erst einmal die Ausgabe - das kann man in Board mit rein nehmen (also sowas wie eine print Methode), oder man macht es in eine eigene Klasse (Overkill am Anfang aber das, was später üblich wird).

Also geben wir Board noch eine print() Methode:
Java:
public void print() {
    for(int row = 0; row < fields.length; row++) {
        for (int column = 0; column < fields[row].length; column++) {
            System.out.print(" ");
            switch(fields[row][column]) {
                case FIRST_PLAYER:
                    System.out.print("X");
                    break;
                case SECOND_PLAYER:
                    System.out.print("O");
                    break;
                case EMPTY:
                    System.out.print(" ");
                    break;
            }
            System.out.print(" ");
        }
        System.out.println();
    }
}
Das wäre dann aber auch wieder eine eigene Klasse. TicTacToe oder so. Da kannst Du dann die Abläufe entwickeln:
- Am Anfang wird ein Spielfeld erzeugt.
- Dann werden die Spieler abwechelnd nach einem Feld gefragt, verifiziert, ob die Auswahl gültig ist u.s.w.
Also Klasse TicTacToe mit erstem Anfang:
Java:
public class TicTacToe {
    private Board board = new Board();
    int player = 1;
    public void run() {
        while (!board.finished()) {
            getMoveOfPlayer();
            if (playerWon()) {
                printWinMessage()
            } else if (!board.movesAvailable()) {
                printGameEndedInTie()
            } else {
                nextPlayer();
            }
        }
    }
}

Das ist einfach mal eine Logik so runter geschrieben. Du erkennst ganz viele Methoden, die noch nicht geschrieben wurden. Aber so in der Art sollte es dann immer weiter herunter gebrochen werden.
 

Jw456

Top Contributor
Dein zweidimensionales Array war eigentlich schon richtig nur eben nicht vom Datentyp String dafür hast du doch das Enum erstellt.

Beim zuweisen also erst mall alle Felder „lehr“ wirst du zwei verschachtelte for schleifen brauchen.

Edit ok zu langsam
 

Maxel33

Aktives Mitglied
Ich war bisher so weit:

eigentlich müsste doch der Anfang vollkommen ok sein, oder?

Java:
public class Spielfeld {
    
    Eingabe[][] array1 = new Eingabe[3][3];
    
    
    public Spielfeld() {
    for(int i = 0; i < array1.length; i++) {
        for(int j = 0; j < array1.length;j++) {
        array1[i][j] = Eingabe.EMPTY;
        System.out.print(array1[i][j]);
        if(j < 2) {
            System.out.print("|");
        }
    }
        System.out.println();
}
}
    

}

Dabei ist Eingabe das enum.

Kann ich so weitermachen?
 

Jw456

Top Contributor
Überlege mal warum kneinzel eine print Methode gemacht hat . Weil du die viel brauchen wirst und zwar nach jeder Eingabe wirst du das Spielfeld neu Ausgeben müssen.

auch der Bezeichner Eingabe ist nicht sinnvoll. Halte dich an das was Kneizel dir gegeben hat.
 

Maxel33

Aktives Mitglied
Überlege mal warum kneinzel eine print Methode gemacht hat . Weil du die viel brauchen wirst und zwar nach jeder Eingabe wirst du das Spielfeld neu Ausgeben müssen.

auch der Bezeichner Eingabe ist nicht sinnvoll. Halte dich an das was Kneizel dir gegeben hat.
Ich habe das ja in der Spielfeld Klasse & nicht in der Main
 

Jw456

Top Contributor
Kneizel wollte dir zeigen das es besser ist das löschen des Board und ausgeben anzeigen des Board auf zwei Methoden zu verteilen.

so wie du es machen willst wirst du immer wider den gleichen Code schreiben bei jeder ausgabe
 
K

kneitzel

Gast
Ich war bisher so weit:

eigentlich müsste doch der Anfang vollkommen ok sein, oder?
Das Anfang ist schon relativ gut. Da kommt am Anfang extrem viel auf einmal und das macht es nicht ganz so einfach.

Generell finde ich es aber sehr gut, dass Du weiter selbst versucht etwas zu schreiben und nicht nur übernimmst. Denn nur so lernt und vertieft man etwas.

Einfach ein paar Gedanken, die mir so durch den Kopf gehen:
a) Bei jeder Methode ist die Frage: Was erwarte ich? Ein Konstruktor soll ja nur eine neue Instanz initialisieren. Also dafür sorgen, dass die diversen Instanzvariablen vernünftig belegt sind. Eine Ausgabe wird da nicht erwartet.
b) Die Ausgabe ist etwas, das regelmäßig gebraucht wird. Daher macht es Sinn, sowas in eine eigene Methode zu packen. So kann die Methode einfach immer aufgerufen werden, wann immer Du es brauchst.
c) Bei Bezeichnern (also den Namen die Du vergibst) immer etwas überlegen, was es denn genau ist. Du hast das Enum "Eingabe" genannt. Aber ist es denn wirklich eine Eingabe? Eingeben tut der Spieler ja etwas wie 1 2. Er gibt ja kein X oder = an. Es geht also eher um eine Feldbelegung.
Es ist vollkommen normal, dass einem nicht immer sofort gute Begriffe einfallen. Aber immer beim Betrachten des Codes die Frage im Hinterkopf behalten: Was habe ich da in der Variable? Was repräsentiert eine Instanz einer Klasse? Was macht die Methode? Und dann ggf. einen Namen direkt anpassen. Die Entwicklungsumgebungen haben da meist eine guter Unterstützung, um etwas umzubenennen.
 

Maxel33

Aktives Mitglied
Das Anfang ist schon relativ gut. Da kommt am Anfang extrem viel auf einmal und das macht es nicht ganz so einfach.

Generell finde ich es aber sehr gut, dass Du weiter selbst versucht etwas zu schreiben und nicht nur übernimmst. Denn nur so lernt und vertieft man etwas.

Einfach ein paar Gedanken, die mir so durch den Kopf gehen:
a) Bei jeder Methode ist die Frage: Was erwarte ich? Ein Konstruktor soll ja nur eine neue Instanz initialisieren. Also dafür sorgen, dass die diversen Instanzvariablen vernünftig belegt sind. Eine Ausgabe wird da nicht erwartet.
b) Die Ausgabe ist etwas, das regelmäßig gebraucht wird. Daher macht es Sinn, sowas in eine eigene Methode zu packen. So kann die Methode einfach immer aufgerufen werden, wann immer Du es brauchst.
c) Bei Bezeichnern (also den Namen die Du vergibst) immer etwas überlegen, was es denn genau ist. Du hast das Enum "Eingabe" genannt. Aber ist es denn wirklich eine Eingabe? Eingeben tut der Spieler ja etwas wie 1 2. Er gibt ja kein X oder = an. Es geht also eher um eine Feldbelegung.
Es ist vollkommen normal, dass einem nicht immer sofort gute Begriffe einfallen. Aber immer beim Betrachten des Codes die Frage im Hinterkopf behalten: Was habe ich da in der Variable? Was repräsentiert eine Instanz einer Klasse? Was macht die Methode? Und dann ggf. einen Namen direkt anpassen. Die Entwicklungsumgebungen haben da meist eine guter Unterstützung, um etwas umzubenennen.
Dankeschön für die vielen Tipps. :)
 

Maxel33

Aktives Mitglied
Ich möchte jetzt, dass der Spieler seine Nummer eingibt, wo er den Kreis hinhaben möchte. Bin ich auf einem Holzweg oder kann das in die richtige Richtung gehen?

Java:
    public void zuweisung() {
        System.out.println("Gebe die Stelle an: ");
        Scanner scan = new Scanner(System.in);
        int eingabei = scan.nextInt();
        int eingabej = scan.nextInt();
        
        switch(eingabei & eingabej) {
        case 0:
            array1[0][0] = Eingabe.PLAYER_ONE;
            break;
            
        
            
        }
        
        
    }
 

Jw456

Top Contributor
Du bekommst doch beide int i und j.
Also kannst du auch gleich die beiden int benutzen das in das Array zu Speichen. Vorher solltest du prüfen od das überhaupt möglich ist. Also ob das Feld noch frei ist. Nicht schon durch einen spielstein belegt ist.
 

Jw456

Top Contributor
array1[eingabei] [eingabej] = Eingabe.PLAYER_ONE;

Vorher prüfen ob das Feld empty ist.
Wenn es nicht frei ist einen Fehler ausgeben neue Abfrage machen.
Ist es, frei kannst du es Speichen.

Edit vergesse das switch
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Ich möchte jetzt, dass der Spieler seine Nummer eingibt, wo er den Kreis hinhaben möchte. Bin ich auf einem Holzweg oder kann das in die richtige Richtung gehen?
Grundsatz: trenne Darstellung/Eingabe von Anwendungslogik.

Was ist der Kern des Spiels? Du hast ein Spielfeld, zwei Spieler und ein paar Regeln, z. B. dass die Spieler abwechselnd an der Reihe sind, dass ein besetztes Feld nicht nochmal besetzt werden darf und wann jemand gewonnen hat. Das ist der Kern des Spiels und den implementierst Du völlig unabhängig von irgendwelchen Eingaben.

Schau Dir Deine Klasse an:
Java:
public class TicTacToe {
    private Board board = new Board();
    int player = 1;
    public void run() {
        while (!board.finished()) {
            getMoveOfPlayer();
            if (playerWon()) {
                printWinMessage()
            } else if (!board.movesAvailable()) {
                printGameEndedInTie()
            } else {
                nextPlayer();
            }
        }
    }
}
Da hast Du oben ein Board, das weiß, welcher Spieler wohin gezogen hat, ob noch Züge möglich sind usw. Board ist hier mehr oder weniger der Kern der Anwendung. Die Klasse TicTacToe dient dagegen hauptsächlich der Steuerung durch den Anwender.

Du könntest also in getMoveOfPlayer() den Spieler nach dem zu besetzenden Feld fragen und die Info an board übergeben.
 

Jw456

Top Contributor
Tipp bei der Eingabe solltest Du auch auf prüfen ob die eingegeben Werte von User auch im richtigen Werte Bereich sind. Nicht über die Array Grenzen hinaus gehen. Hatt der user bz 5 4 eingeben solltest du reagieren. Nicht einfach weiter machen.
 
K

kneitzel

Gast
Du hast schon viele gute Hinweise bekommen - ich möchte aber auch noch meinen Senf dazu abgeben:
Java:
        int eingabei = scan.nextInt();
        int eingabej = scan.nextInt();
Das ist syntaktisch richtig, aber was ist in den Variablen?
Das es Werte sind, die eingegeben wurden, ist evtl. als Spezifizierung nicht so interessant. Das wäre interessant, wenn Du mehrere i und j hättest. Also das "eingabe" kann ich noch etwas verstehen. Aber i und j? Das wird sehr unübersichtlich. An einer Prüfung kann man nicht direkt erkennen, ob diese korrekt ist oder nicht. (Ist ein if (gewuenschteZeile == i) oder if (gewuenschteZeile == j) richtig?
Das eine ist die Zeile und das andere die Spalte. Ein if (gewuenschteZeile == eingabeSpalte) fällt direkt auf: Zeile wird mit Spalte verglichen?
==> Daher bei Namen gut aufpassen, was man da wählt.

Java:
        int zeile = scan.nextInt();
        int spalte = scan.nextInt();

Die Klasse Board hat bisher sehr wenig Methoden, weil wir bisher nichts brauchten. Also jetzt müssen wir paar Dinge einbauen / prüfen:
- Wir wollen evtl. prüfen, ob zeile / spalte valide sind. Hier ist dann die Frage: bleiben wir bei index 0 oder wollen wir mit 1 starten? Wir lassen erst einmal die indices so, wie sie bei Arrays sind. Board kann dann also eine Methode bekommen:
isFieldValid(int row, int column) -> Hier prüfen, dass diese von 0..2 sind. Statt der 2 evtl. die größe des Arrays prüfen. Oder einfach eine Konstante einbauen oder so.
- Wenn die Eingabe valide ist, wollen wir prüfen, ob das Feld leer ist:
isFieldEmpty(int row, int column) -> Hier wäre dann zu prüfen, ob das Feld EMPTY ist.
- Dann wollen wir ein Feld setzen: setField(int row, int column, Field value) -> Hier wird dann das Feld gesetzt.

Die Herangehensweise ist für mich immer gleich: Ich formuliere immer die Schritte - das sind dann in der Regel Methoden, die ich schreibe und ich ich dann immer dahinpacke, wo sie hin gehören. Hier geht es ja um das board, daher sind das Methoden in der Klasse Board.

Das ist etwas, das man paar mal so wirklich durchgespielt haben muss - denn es ist eigentlich ganz einfach.

Hier kann man sich das auch so vorstellen, dass die einzelnen Instanzen dumme Personen sind, die nur wissen, was in Instanzvariablen ist und nur das können, was man Ihnen beigebracht hat.
-> Wir fragen das board: Ist das Feld x, y frei? UPS! Board kann darauf noch nicht antworten. Also bringen wir Board bei, wie man darauf antworten muss, sprich: wir schreiben die Methode.

Prinzipiell kann man immer überlegen, wo man die Logik plaziert. Man kann auch dem Board sagen: Setze den aktuellen Spieler auf Feld x,y und sag mir, ob es erfolgreich war!
=> Dann gehen die Schritten oben in das Board. Sprich dem Board bringen wir bei: Bei so einer Nachricht schaust du, ob das Feld gültig ist. Dann schaust Du, ob das Feld noch frei ist und dann .....

Diese Vorstellung, dass Objekte sind Nachrichten senden, ist heutzutage nicht mehr so wirklich verbreitet. Mit hat diese Vorstellung aber immer recht gut gefallen. (Geht aus meiner Sicht auf Smalltalk zurück - da war dies zumindest ein anzutreffender Sprachgebrauch.) Falls Du das eher verwirrend findest, dann vergiss diese Idee einfach direkt wieder.
 

Maxel33

Aktives Mitglied
Du hast schon viele gute Hinweise bekommen - ich möchte aber auch noch meinen Senf dazu abgeben:
Java:
        int eingabei = scan.nextInt();
        int eingabej = scan.nextInt();
Das ist syntaktisch richtig, aber was ist in den Variablen?
Das es Werte sind, die eingegeben wurden, ist evtl. als Spezifizierung nicht so interessant. Das wäre interessant, wenn Du mehrere i und j hättest. Also das "eingabe" kann ich noch etwas verstehen. Aber i und j? Das wird sehr unübersichtlich. An einer Prüfung kann man nicht direkt erkennen, ob diese korrekt ist oder nicht. (Ist ein if (gewuenschteZeile == i) oder if (gewuenschteZeile == j) richtig?
Das eine ist die Zeile und das andere die Spalte. Ein if (gewuenschteZeile == eingabeSpalte) fällt direkt auf: Zeile wird mit Spalte verglichen?
==> Daher bei Namen gut aufpassen, was man da wählt.

Java:
        int zeile = scan.nextInt();
        int spalte = scan.nextInt();

Die Klasse Board hat bisher sehr wenig Methoden, weil wir bisher nichts brauchten. Also jetzt müssen wir paar Dinge einbauen / prüfen:
- Wir wollen evtl. prüfen, ob zeile / spalte valide sind. Hier ist dann die Frage: bleiben wir bei index 0 oder wollen wir mit 1 starten? Wir lassen erst einmal die indices so, wie sie bei Arrays sind. Board kann dann also eine Methode bekommen:
isFieldValid(int row, int column) -> Hier prüfen, dass diese von 0..2 sind. Statt der 2 evtl. die größe des Arrays prüfen. Oder einfach eine Konstante einbauen oder so.
- Wenn die Eingabe valide ist, wollen wir prüfen, ob das Feld leer ist:
isFieldEmpty(int row, int column) -> Hier wäre dann zu prüfen, ob das Feld EMPTY ist.
- Dann wollen wir ein Feld setzen: setField(int row, int column, Field value) -> Hier wird dann das Feld gesetzt.

Die Herangehensweise ist für mich immer gleich: Ich formuliere immer die Schritte - das sind dann in der Regel Methoden, die ich schreibe und ich ich dann immer dahinpacke, wo sie hin gehören. Hier geht es ja um das board, daher sind das Methoden in der Klasse Board.

Das ist etwas, das man paar mal so wirklich durchgespielt haben muss - denn es ist eigentlich ganz einfach.

Hier kann man sich das auch so vorstellen, dass die einzelnen Instanzen dumme Personen sind, die nur wissen, was in Instanzvariablen ist und nur das können, was man Ihnen beigebracht hat.
-> Wir fragen das board: Ist das Feld x, y frei? UPS! Board kann darauf noch nicht antworten. Also bringen wir Board bei, wie man darauf antworten muss, sprich: wir schreiben die Methode.

Prinzipiell kann man immer überlegen, wo man die Logik plaziert. Man kann auch dem Board sagen: Setze den aktuellen Spieler auf Feld x,y und sag mir, ob es erfolgreich war!
=> Dann gehen die Schritten oben in das Board. Sprich dem Board bringen wir bei: Bei so einer Nachricht schaust du, ob das Feld gültig ist. Dann schaust Du, ob das Feld noch frei ist und dann .....

Diese Vorstellung, dass Objekte sind Nachrichten senden, ist heutzutage nicht mehr so wirklich verbreitet. Mit hat diese Vorstellung aber immer recht gut gefallen. (Geht aus meiner Sicht auf Smalltalk zurück - da war dies zumindest ein anzutreffender Sprachgebrauch.) Falls Du das eher verwirrend findest, dann vergiss diese Idee einfach direkt wieder.
Okay, ich werde mich mal dran setzen. Vielen Dank für die vielen Informationen. Das ist mein aller erstes "Spiel" welches ich schreibe. In der Praxis ist das gelernte Wissen anfangs echt mega schwer umzusetzen, wenn du verstehst, was ich meine. Man hat die Grundlagen einigermaßen drauf, aber manchmal ist man echt überfordert.

Jedoch vielen Dank, dass ihr mir alle so gut hilft :)
 

Maxel33

Aktives Mitglied
Habe nochmal alles ein wenig überarbeitet & noch drei Methoden hinzugefügt(siehe Quellcode). Ebenfalls habe ich das i und das j für "Zeile" & "Spalte" ersetzt. Könntet ihr vielleicht mal drüber Schauen und mir schreiben, ob die Methoden so in Ordnung gehen würden?

Java:
    public void eingabeDerStelle() {
        System.out.println("Gebe die Stelle an: ");
        Scanner scan = new Scanner(System.in);
        int zeile = scan.nextInt();
        int spalte = scan.nextInt();
        
    }
    
    public void PrüfenObWertGültigIst(int zeile, int spalte) {
        switch(zeile & spalte) {
        case 0:
            zuweisung();
            break;
        case 1:
            zuweisung();
            break;
        case 2:
            zuweisung();
            break;
        default:
            System.out.println("Dieser Wert liegt nicht im Bereich!");
        }

    }

    public void PrüfungEinesLeerenFeldes(int zeile, int spalte) {
        switch(array1[zeile][spalte]) {
        case EMPTY:
            zuweisung();
            break;
        case PLAYER_ONE:
            break;
        case PLAYER_TWO:
            break;
        }
    }
    
    public void zuweisung() {
        
    }

Ich hatte überlegt eventuell ein Exception zu schmeißen bei der Prüfung, ob der Wert des Arrays in dem Bereich liegt. Was haltet ihr davon?

Liebe Grüße :)
 

Jw456

Top Contributor
Zu der Eingabe Methode
Du fragst den User nach Zeile und Spalt. Du gibst die erfragen Daten nicht zurück.
Die int Variablen sind local. Die Eingabe vom User ist nach der Methode. Verlorenen Weg.
 
Zuletzt bearbeitet:
K

kneitzel

Gast
In eingabeDerStelle hast Du die Eingabe in lokalen Variablen. Damit sind die Daten nach der Ausführung weg. Die Daten müssen somit entweder in einer Instanzvariable gespeichert werden oder zurück gegeben werden. So oder so endet es damit, dass Du eine Klasse hast mit spalte/zeile. Das kann ein einfaches Wert-Objekt sein, das Du dann generell nutzt (Also überall, wo Du bisher Zeile/Spalte genutzt hast.

Die Prüfung sollte ein Resultat zurück geben, also ein Ergebnis der Prüfung. Und es sollte kein Nebeneffekt geben. Die Zuweisung ist ja nicht das, was man erwartet. Wenn Du prüfst, ob Du genug Geld für einen Kauf hast, dann prüfst Du nur und kaufst nicht sofort, wenn das Geld reicht.

Und Methodennamen sollten mit kleinen Buchstaben starten und ein Verb beinhalten also z.B. prüfe statt prüfung.
 

Jw456

Top Contributor
Zum prüfen ob das Feld auf dem Board frei ist. Übergibst du die Zeile und Spalte. Der Methode solltest du einen boolesche Rückgabe Wert geben.
Eigentlich brauchst du doch nur zb mit if prüfen od das Board an der Zeile und Spalte lehr ist.
Und das Ergebnis zurück geben.

Eine Methode mit einen Rückgabe Wert wirst du doch wohl kennen. Die hat kein void.
 

Jw456

Top Contributor
Tipp da du in deiner Eingabe Methode zwei Werte zurück geben musst Zeile und Spalte. Du aber nur einen zurückgeben kannst. Dann fasse die beiden in einer Daten Klasse zusammen und benutze dies als Datentyp.
Wurde von kneitzel auch schon gesagt.
 

Jw456

Top Contributor
Ein prüfen ob der user es im richtigen Werte Bereich eingeben hat machst du auch nicht.
Also ob es nicht keiner 0 und nicht größer 2 ist.
 

Maxel33

Aktives Mitglied
Ich sehe jetzt ganz und gar nicht mehr durch, wie ich eine Datenklasse erstellen soll. Auch die If-Anweisung verwirrt mich. Ich kann Spalte und Zeile doch nicht in einer if-Anweisung prüfen, ob diese EMPTY sind. Ich weiß gar nicht, wie ich dies machen soll. Habe ich jetzt alle Methoden falsch oder war auch etwas richtiges dran. Bin gerade ganz schön verzweifelt..
 
K

kneitzel

Gast
Die Gliederung ist prinzipiell schon gut, lediglich mit dem Fluss der Daten muss man da etwas anpassen.

Die Datenklasse für eine Position im Spielfeld wäre sowas:
Java:
public class Position {
    private int zeile;
    private int spalte;
    
    public Position(int zeile, int spalte) { ... }
    
    // Und Getter für zeile/spalte!
}

Konstruktor muss man noch ausfüllen und die Getter fehlen.

Und Du kannst Spalte und Zeile prüfen:

Du kannst ja prüden, ob die Angabe von Spalte und Zeile gültig sind: Was muss alles gelten?
spalte >= 0
spalte <= 2
zeile >= 0
zeile <= 2
Da alles erfüllt sein muss, wäre dies mit und zu vernüpfen.

Ob ein gegebenes Feld leer ist: feld[zeile][spalte] == Feld.EMPTY

Das wären so Ansätze, die Dich hoffentlich weiter bringen können.
 

Maxel33

Aktives Mitglied
Die Gliederung ist prinzipiell schon gut, lediglich mit dem Fluss der Daten muss man da etwas anpassen.

Die Datenklasse für eine Position im Spielfeld wäre sowas:
Java:
public class Position {
    private int zeile;
    private int spalte;
  
    public Position(int zeile, int spalte) { ... }
  
    // Und Getter für zeile/spalte!
}

Konstruktor muss man noch ausfüllen und die Getter fehlen.

Und Du kannst Spalte und Zeile prüfen:

Du kannst ja prüden, ob die Angabe von Spalte und Zeile gültig sind: Was muss alles gelten?
spalte >= 0
spalte <= 2
zeile >= 0
zeile <= 2
Da alles erfüllt sein muss, wäre dies mit und zu vernüpfen.

Ob ein gegebenes Feld leer ist: feld[zeile][spalte] == Feld.EMPTY

Das wären so Ansätze, die Dich hoffentlich weiter bringen können.
Die Datenklasse hatte ich erstellt gehabt.

Java:
    public Datenklasse eingabeDerStelle() {
        System.out.println("Gebe die Stelle an: ");
        Scanner scan = new Scanner(System.in);
        int zeile = scan.nextInt();
        int spalte = scan.nextInt();
        Datenklasse dt = new Datenklasse(zeile, spalte);
        return dt;
    }

Zu den anderen Dingen..ist dies so von euch gemeint?

Java:
    public boolean PrüfenObWertGültigIst(int zeile, int spalte) {
        if(zeile >=  0) {
            return true;
        }else if(zeile <=2) {
            return true;
        }else if(spalte >=0) {
            return true;
        }else if(spalte <= 2) {
            return true;
        }else {
            return false;
        }

    }

    public boolean PrüfungEinesLeerenFeldes(int zeile, int spalte) {
       
        if(array1[zeile][spalte] == Eingabe.EMPTY) {
            return true;
        }else {
            return false;
        }
    }
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Die Datenklasse hatte ich erstellt gehabt. Wo muss ich diese jetzt einsetzen und was bringt mir der Konstruktor?
Damit kannst Du Deiner Methode eine entsprechende Rückgabe geben:
Java:
    public Position eingabeDerStelle() {
        System.out.println("Gebe die Stelle an: ");
        Scanner scan = new Scanner(System.in);
        int zeile = scan.nextInt();
        int spalte = scan.nextInt();
        return new Position(zeile, spalte);
    }

(Um einfach einmal eine Möglichkeit aufzuzeigen.)

Zu den anderen Dingen..ist dies so von euch gemeint?
Java:
    public boolean PrüfenObWertGültigIst(int zeile, int spalte) {
        if(zeile >=  0) {
            return true;
        }else if(zeile <=2) {
            return true;
        }else if(spalte >=0) {
            return true;
        }else if(spalte <= 2) {
            return true;
        }else {
            return false;
        }

    }
[/QUOTE]
Nein, damit der Wert gültig ist müssen ja alle Bedingungen wahr sein. Also mit und (&&) verknüpft:
[ICODE]if (zeile >= 0 && zeile <= 2 && .....)[/ICODE]
[QUOTE="Maxel33, post: 1267517, member: 66357"]
    public boolean PrüfungEinesLeerenFeldes(int zeile, int spalte) {
       
        if(array1[zeile][spalte] == Eingabe.EMPTY) {
            return true;
        }else {
            return false;
        }
    }
Ja, wobei man das abkürzen kann. Die Bedingung im if wird ja zu true / false und dann willst Du tru / false zurück geben. Also genau diesen Wert. Daher schreibt man bei sowas in der Regel einfach:
return array1[zeile][spalte] == Eingabe.EMPTY;
 
K

kneitzel

Gast
Wie werden eigentlich deine Eltern genannt? Mensch? Oder Säugetier? Oder einfach als Lebewesen?

Ja, das ist eine Datenklasse (Wenn man das so bezeichnen möchte). Aber dennoch sollte es ein vernünftigen Namen haben. So wie halt Deine Eltern Lebenwesen sind, werden sie doch bestimmt nicht so bezeichnet :)
 

Maxel33

Aktives Mitglied
Jetzt muss ich im Prinzip nur noch die set Methode erstellen oder?

Java:
    public void setzFeld(int zeile, int spalte, Spielfeld wert) {
        
        
            
        }

So ist ja der Aufbau. Die Zuweisung kann ich doch bestimmt mit der Datenklasse machen oder? Also wieder eine Datenklasse erstellen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Java Backend? Java Basics - Anfänger-Themen 24
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
Ostkreuz Java Docs Java Basics - Anfänger-Themen 9
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
A Java Kurs / Tutorial Java Basics - Anfänger-Themen 6
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
P Java 2n Potenzieren Java Basics - Anfänger-Themen 1
J Java Hamster Java Basics - Anfänger-Themen 4
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
laxla123 If-else Java Java Basics - Anfänger-Themen 4
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
S Substring in java Java Basics - Anfänger-Themen 3
Z Operatoren Java Applikation Java Basics - Anfänger-Themen 8
Tw1Z Erste Schritte Sort in java Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben