Java Backend

Jw456

Top Contributor
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?
nein eine neue DatenKlasse brauchst du nicht du kannst aber das Objekt was du aus der User Eingabe Methode zurück bekommst gleich an die Methode Übergeben. Zeile Spalte sind ja in dem Objekt.
 
K

kneitzel

Gast
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?
Du kannst eine Methode schreiben, die ein Feld setzt. Die sollte dann in der Klasse Spielbrett (Du machst es ja gerne auf Deutsch, ich meine die Klasse Board, die ich schon einmal skizziert habe) sein. Und statt zeile/spalte wäre dann eine Instant der Klasse Position (oder wie immer du die gerne nennen möchtest, aber bitte nicht Datenklasse!) zu übergeben.
 

Jw456

Top Contributor
nein eine neue DatenKlasse brauchst du nicht du kannst aber das Objekt was du aus der User Eingabe Methode zurück bekommst gleich an die Methode Übergeben. Zeile Spalte sind ja in dem Objekt.
ergenzung
PS du willst doch auch einen Spieler auf das Feld setzen. also soltest du auch den Spieler übergeben.
den du auf das Feld setzen willst.
 
K

kneitzel

Gast
Die Methode wird hoffentlich Bestandteil des Spielbretts / Boards sein und dazu dienen, ein einzelnes Feld zu setzen. Und das wären - nach meinem Vorschlag, ein Wert aus der Menge FIRST_PLAYER, SECOND_PLAYER und EMPTY.
 

Jw456

Top Contributor
Die Methode wird hoffentlich Bestandteil des Spielbretts / Boards sein und dazu dienen, ein einzelnes Feld zu setzen. Und das wären - nach meinem Vorschlag, ein Wert aus der Menge FIRST_PLAYER, SECOND_PLAYER und EMPTY.
"wert" ist aber vom Datentyp Spielfeld also das Board . wo ist jetzt Spieler 1 oder 2 ?

das Board ist eine Instanzvariable die braucht er nicht zu übergeben . aber ob es sich um Spieler 1 oder 2 handelt schon. Er will ja den Spieler auf das mit Zeile und Spalte angeben Feld setzen.
 
Zuletzt bearbeitet:

Maxel33

Aktives Mitglied
Hallo, sorry das ich gestern abend nicht mehr konnte.

Hier mein Code:

Java:
import java.util.Scanner;

import com.sun.java.util.jar.pack.Instruction.Switch;

public class Spielfeld {
    
    Eingabe[][] array1 = new Eingabe[3][3];
    
    
    public Spielfeld() {
    for(int zeile = 0; zeile < array1.length; zeile++) {
        for(int spalte = 0; spalte < array1.length;spalte++) {
        array1[zeile][spalte] = Eingabe.EMPTY;
        if(spalte < 2) {
            System.out.print("|");
        }
    }
        
        System.out.println();
        if(zeile < 2) {
        System.out.println("------");
        }
    }
}
    
    public void print() {
        for(int zeile = 0; zeile < array1.length; zeile++) {
            for(int spalte = 0; spalte < array1.length;spalte++) {
            array1[zeile][spalte] = Eingabe.EMPTY;
            if(spalte < 2) {
                System.out.print("|");
            }
            switch(array1[zeile][spalte]) {
            case PLAYER_ONE:
                System.out.print("O");
                break;
            case PLAYER_TWO:
                System.out.print("X");
                break;
            case EMPTY:
                System.out.print(" ");
                break;
            }
        }
            
            System.out.println();
            if(zeile < 2) {
            System.out.println("------");
            }
        }
    }
    
    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;
    }
    
    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) {
        
        //entweder so
        return array1[zeile][spalte] == Eingabe.EMPTY;
        
        //oder so
        
//        if(array1[zeile][spalte] == Eingabe.EMPTY) {
//            return true;
//        }else {
//            return false;
//        }
    }
    
    
    public void setzFeld(int zeile, int spalte, Spielfeld wert) {
        
        
            
        }
    }
 

Maxel33

Aktives Mitglied
Du kannst eine Methode schreiben, die ein Feld setzt. Die sollte dann in der Klasse Spielbrett (Du machst es ja gerne auf Deutsch, ich meine die Klasse Board, die ich schon einmal skizziert habe) sein. Und statt zeile/spalte wäre dann eine Instant der Klasse Position (oder wie immer du die gerne nennen möchtest, aber bitte nicht Datenklasse!) zu übergeben.
Das verstehe ich leider nicht. Also soll ich jetzt meine Datenklasse an die Methode übergeben?
Und wie kann ich genau an diesem Punkt/Koordinaten dann das X oder O setzen?
 

Maxel33

Aktives Mitglied
Eventuell so?

Java:
    public void setzFeld(int zeile, int spalte, Eingabe value) {
        value = array1[zeile][spalte];
        System.out.print(array1[zeile][spalte]);
        }
 

Jw456

Top Contributor
Ich sehe einiges was nicht so passt.

Der user macht eine Eingabe in der Methode eingabeDerStelle() zurück bekommst du ein Objekt vom Typ „Datenklasse“
In dem Objekt ist die Zeile und Spalte.

Jetzt willst du die Eingabe prüfen in „PrüfenObWertGültigIst“ aber was übergingst du Zeile und Spalte. Woher hast du die zwei werte die sind doch in dem Objekt.

Was musst du übergeben das Objekt von der User Eingabe.

Bei den anderen Methoden das gleiche.
 
K

kneitzel

Gast
Eventuell so?

Java:
    public void setzFeld(int zeile, int spalte, Eingabe value) {
        value = array1[zeile][spalte];
        System.out.print(array1[zeile][spalte]);
        }
Die Zuweisung ist falsch herum. Ansonsten ist das prinzipiell richtig (Aber die Bezeichner sind gewöhnungsbedürftig).
 

Jw456

Top Contributor
Die Zuweisung ist falsch herum. Ansonsten ist das prinzipiell richtig (Aber die Bezeichner sind gewöhnungsbedürftig).
ja richtig falschrum aber woher hat er die zeile und Spalte?
Java:
import java.util.Scanner;

import com.sun.java.util.jar.pack.Instruction.Switch;

public class Spielfeld {
    
    Eingabe[][] array1 = new Eingabe[3][3];
    
    
    public Spielfeld() {
    for(int zeile = 0; zeile < array1.length; zeile++) {
        for(int spalte = 0; spalte < array1.length;spalte++) {
        array1[zeile][spalte] = Eingabe.EMPTY;
        if(spalte < 2) {
            System.out.print("|");
        }
    }
        
        System.out.println();
        if(zeile < 2) {
        System.out.println("------");
        }
    }
}
    
    public void print() {
        for(int zeile = 0; zeile < array1.length; zeile++) {
            for(int spalte = 0; spalte < array1.length;spalte++) {
            array1[zeile][spalte] = Eingabe.EMPTY;
            if(spalte < 2) {
                System.out.print("|");
            }
            switch(array1[zeile][spalte]) {
            case PLAYER_ONE:
                System.out.print("O");
                break;
            case PLAYER_TWO:
                System.out.print("X");
                break;
            case EMPTY:
                System.out.print(" ");
                break;
            }
        }
            
            System.out.println();
            if(zeile < 2) {
            System.out.println("------");
            }
        }
    }
    
    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;
    }
    
    public boolean PrüfenObWertGültigIst( Datenklasse dt) {
                    
        if(dt.getZeile() >=  0) {
            return true;
        }else if(dt.getZeile() <=2) {
            return true;
        }else if(dt.getSpalte() >=0) {
            return true;
        }else if(dt.getSpalte() <= 2) {
            return true;
        }else {
            return false;
        }

    }

    
      public void setzFeld(Datenklasse dt , Eingabe value) {
          int zeile = dt.getZeile();
          int spalte =dt.getSpalte(); 
          
        array1[zeile][spalte] = value;
        System.out.print(array1[zeile][spalte]);
        }
    
    
    }
 

Maxel33

Aktives Mitglied
Ich sehe einiges was nicht so passt.

Der user macht eine Eingabe in der Methode eingabeDerStelle() zurück bekommst du ein Objekt vom Typ „Datenklasse“
In dem Objekt ist die Zeile und Spalte.

Jetzt willst du die Eingabe prüfen in „PrüfenObWertGültigIst“ aber was übergingst du Zeile und Spalte. Woher hast du die zwei werte die sind doch in dem Objekt.

Was musst du übergeben das Objekt von der User Eingabe.

Bei den anderen Methoden das gleiche.
Das klingt logisch. Im Prinzip so?

Java:
    public boolean PrüfenObWertGültigIst(Position dt) {
        if(dt.getZeile() >=  0) {
            return true;
        }else if(dt.getZeile()<=2) {
            return true;
        }else if(dt.getSpalte() >=0) {
            return true;
        }else if(dt.getSpalte() <= 2) {
            return true;
        }else {
            return false;
        }

    }
 
K

kneitzel

Gast
Die Logik der Methode ist einfach weiterhin falsch. Und wir hatten das schon mehrfach benannt. Ob Du nun Zeile / Spalte einzeln übergibst oder in einer Position ist erst einmal egal. Die Logik solltest Du erst einmal korrigieren.

Bei dir ist jeder Wert korrekt, denn entweder ist eine Zahl >= 0 oder eben <=2. Und die Spalte prüfst Du niemals bei der Logik....
 

Maxel33

Aktives Mitglied
Die Logik der Methode ist einfach weiterhin falsch. Und wir hatten das schon mehrfach benannt. Ob Du nun Zeile / Spalte einzeln übergibst oder in einer Position ist erst einmal egal. Die Logik solltest Du erst einmal korrigieren.

Bei dir ist jeder Wert korrekt, denn entweder ist eine Zahl >= 0 oder eben <=2. Und die Spalte prüfst Du niemals bei der Logik....
Also interessieren praktisch nur die false Werte?
 
K

kneitzel

Gast
Also interessieren praktisch nur die false Werte?
Wie Du es genau baust, kannst Du Dir überlegen.

Es gibt ein 08/15 Verfahren, das man nutzen kann:
- In der Methode erst alles, was eindeutig ist, abhandeln mit einem return true / false;
- Dann am Ende das übriggebliebene zurückgeben.

Das ginge dann über etwas wie
Java:
boolean isPositionValid(Position pos) {
    if (pos.getSpalte() < 0) return false;
    if ......
    if ......
    
    return true;
}

Aber das ist so nicht zwingend notwendig. Das ist viel Code für wenig Funktionalität.

Es reicht ja schon, die Kriterien zu verknüpfen. Was muss denn erfüllt sein?

Spalte größer gleich 0 UND Spalt kleiner gleich 2 UND Zeile größer gleich 0 und Zeile <= 2:
Java:
boolean isPositionValid(Position pos) {
    return pos.getSpalte() >= 0 && pos.getSpalte() <= 2 && pos.getZeile() >= 0 && pos.getZeile() <= 2;
}

Diese logische Verknüpfung solltest Du Dir noch einmal im Detail ansehen.
 

Maxel33

Aktives Mitglied
Wie Du es genau baust, kannst Du Dir überlegen.

Es gibt ein 08/15 Verfahren, das man nutzen kann:
- In der Methode erst alles, was eindeutig ist, abhandeln mit einem return true / false;
- Dann am Ende das übriggebliebene zurückgeben.

Das ginge dann über etwas wie
Java:
boolean isPositionValid(Position pos) {
    if (pos.getSpalte() < 0) return false;
    if ......
    if ......
   
    return true;
}

Aber das ist so nicht zwingend notwendig. Das ist viel Code für wenig Funktionalität.

Es reicht ja schon, die Kriterien zu verknüpfen. Was muss denn erfüllt sein?

Spalte größer gleich 0 UND Spalt kleiner gleich 2 UND Zeile größer gleich 0 und Zeile <= 2:
Java:
boolean isPositionValid(Position pos) {
    return pos.getSpalte() >= 0 && pos.getSpalte() <= 2 && pos.getZeile() >= 0 && pos.getZeile() <= 2;
}

Diese logische Verknüpfung solltest Du Dir noch einmal im Detail ansehen.
Okay, vielen Dank für die nette und aufschlussreiche Antwort. Ich wusste nicht einmal, dass man von der Syntax her sowas machen kann.
 

Maxel33

Aktives Mitglied
Mein weiteres Vorgehen wird jetzt wie folgt aussehen:
1) ich erstelle eine neue Klasse "Spielregeln". In dieser werde ich dann die Regeln überbringen durch Methoden. -> 3 in einer Reihe, 3 in Quer usw.
Dann soll eine Win Nachricht ausgegeben werden. Dazu nutze ich auch wieder eine Methode. Man kann dafür ja eventuell wieder die if Anweisungen nutzen.
 

Jw456

Top Contributor
Das klingt logisch. Im Prinzip so?

Java:
    public boolean PrüfenObWertGültigIst(Position dt) {
        if(dt.getZeile() >=  0) {
            return true;
        }else if(dt.getZeile()<=2) {
            return true;
        }else if(dt.getSpalte() >=0) {
            return true;
        }else if(dt.getSpalte() <= 2) {
            return true;
        }else {
            return false;
        }

    }
Bei diesen Code überlege dir was return macht.
Es beendet die Methode.
Wenn das erste if true ist wird die Methode beendet.
Sollte sie aber nicht denn du bist mit deinen prüfen noch nicht fertig.

Was passiert wenn 5 eingehen wird.?
 

Maxel33

Aktives Mitglied
Bei diesen Code überlege dir was return macht.
Es beendet die Methode.
Wenn das erste if true ist wir die Methode beendet.
Sollte sie aber nicht denn du bist mit deinen prüfen noch nicht fertig.

Was passiert wenn 5 eingehen wird.?
Ach jetzt verstehe ich. Das durchläuft praktisch diese If Anweisung und wenn schon die erste Anweisung true ist. Wird abgebrochen?

Das klingt natürlich super logisch.. :)

Also muss man immer erst die Bedingungen aufzählen, die ausgeschlossen werden sollen.
 
Ä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