Sudoku mit 2D Arrays

K

Kunzen

Mitglied
Hallo Leute,
ich muss für eine Aufgabe mit Hilfe von 2D Arrays das Sudoku Spiel nachbauen.
Ich habe schon etwas programmiert jedoch wird bei meiner Konsole alles untereinander ausgegeben ,also nur 1 Spalte.
Wie kann es so programmieren, dass auf der Konsole auch die Spalten nach rechts angezeigt werden?

Vielen Dank für jede Hilfe
Java Sudoku1.PNG
 

Anhänge

  • Java Sudoku 2.PNG
    Java Sudoku 2.PNG
    29 KB · Aufrufe: 11
L

LimDul

Top Contributor
Code in Code-Tags macht es deutlich einfacher.

System.out.println macht immer einen Zeilenumbruch (print-Line). System.out.print macht keinen, das ist das was du eher brauchst (und dann am Ende jeder Zeile einmal System.out.println verwenden)
 
Zuletzt bearbeitet:
K

Kunzen

Mitglied
Vielen Dank für deine Hilfe LimDul daran hat es gelegen! Ich mache die Aufgabe mal weiter und hoffe das ich nun damit Zurecht komme
 
K

Kunzen

Mitglied
Ich versuche nun wie im Bild die " | " hinzuzufügen jedoch wird dieser neben jeder Zahl eingefügt.
Wie könnte ich dieses Problem lösen?
Zudem soll ich aus jedem leeren Array also mit den Werten 0 , so einstellen ,dass " . " ausgegeben wird.
Jedoch ist/soll mein Array ja vom Typ Int sein diesen muss ich nun in String umwandeln (hab ich mit Integer.toString(zweidimarray [j]); versucht, oder gibt es noch eine andere Möglichkeit?
Java Sudoku1.PNG
Java Sudoku 3.PNG
 
Zuletzt bearbeitet:
L

LimDul

Top Contributor
Ich versuche nun wie im Bild die " | " hinzuzufügen jedoch wird dieser neben jeder Zahl eingefügt.
Wie könnte ich dieses Problem lösen?
Zudem soll ich aus jedem leeren Array also mit den Werten 0 , so einstellen ,dass " . " ausgegeben wird.
Jedoch ist/soll mein Array ja vom Typ Int sein diesen muss ich nun in String umwandeln (hab ich mit Integer.toString(zweidimarray [j]); versucht, oder gibt es noch eine andere Möglichkeit?
Die | willst du ja nur am Anfang und dann nach jeder dritten Spalte ausgeben. Dafür bietet sich der Modulo-Operator (%) an.

Java:
if (index % 3 == 0) {
  System.out.print("|");
}
Beim umwandeln muss du etwas kreativer werden. Da brauchst du eine Abfrage der Form Wenn wert == 0, dann gibt "." aus, ansonsten gib (wie bisher) einfach den Wert aus.
 
K

Kunzen

Mitglied
Danke dir!
Ich habe jetzt das mit der Umwandlung zu Punkten geschafft jedoch werden mir immer noch "|" überall angezeigt. Ich sehe momentan nicht meinen Denkfehler
Sudoku4.PNG
 
temi

temi

Top Contributor
Vergleiche mal, was @LimDul in #5 geschrieben hat und was in deiner if-Bedingung steht.

Und verwende doch bitte die Code-Tags (das </> Symbol) anstatt von Screenshots!
 
K

Kunzen

Mitglied
Vielen Dank für eure Antworten.
Were das mit den Code-Tags jetzt auch so handhaben.
Ich habe es auch mit Index versucht jedoch kommt dann die Fehlermeldung
index cannot be resolved to a variable
 
K

Kunzen

Mitglied
Ok super jetzt habe ichs ^^
Und nun brauche ich ja die waagrechten " -------"
Muss ich um diese zu erzeugen auf den index i zugreifen? Habe es so versucht jedoch kommt es dann ganz komisch raus, die senkrechten Striche funktionieren jedoch mit dem index [ j ] if ( j % 3 == 0) { System.out.print("| "); }
else if (i % 4 == 0) { System.out.print("----------"); }
 
F

fhoffmann

Top Contributor
Du hast zwei for-Schleifen. Die senkrechten Striche musst du in die for-Schleife einbauen, in der du über die Spalten iterierst, die waagerechten Striche musst du dagegen (nur) in die for-Schleife einbauen, die über die Zeilen iteriert.
 
temi

temi

Top Contributor
So als Tipp nebenbei. Es kann sinnvoll sein, anstatt der Variablennamen i und j bessere Bezeichner zu verwenden, z.B. "zeile", "spalte". Das lässt sich leichter lesen und vermeidet Fehler.
 
K

Kunzen

Mitglied
Vielen Dank an euch jetzt hat es endlich geklappt.
Meine nächste Hürde ist jetzt vordefinierte Zahlen mit den Punkten zu ersetzen. Dies habe ich gemacht jedoch bekomme ich kein Leerzeichen nach der eingegeben Zahl hin
Definierte Zahl eintragen:
zweidimArray[1][0] = 2;
if (zweidimArray[1][0] != 0) {

            System.out.print(zweidimArray[1][0] + " ");
        }

Ausgabe: -----------------------
| . . . | . 6. | . . .
| 2. . | . . . | . . .
| . . . | . . . | . . .

Und dann muss ich die Methode static void insert(int x, int y, int zahl) erstellen und das Programm so definieren:
Jetzt muss ich irgendwie wenn ich x & y sozusagen eintippe diese Werte in int zahl einsetzen und dann überprüfen ob der Bereich bei 1-9 liegt und wenn ja dies dann auf das Sudoku Spiel übertragen

static void insert(int x, int y, int zahl):
 static void insert(int x, int y, int zahl) {
        /**
         * Wenn x-te Zeile und y-Spalte leer dann Wert mit int zahl übergeben x-Zeile und
         * y-Spalte dürfen nur im Bereich 1-9 liegen. Wenn nicht alle Werte gültig ||
         * wenn Feld != 0 dann macht die Methode nichts.
         */
        if (x == 0) {

            zahl = In.readInt();
            if (x <= 9 && x >= 1) {
                System.out.print(zweidimArray[zahl]);
            }
        }
        if (y == 0) {
            zahl = In.readInt();
            if (y <= 9 && y >= 1) {
                System.out.print(zweidimArray[x][y]);
            }
        }
 
temi

temi

Top Contributor
Also was schon mal gar nicht geht, ist das readInt() innerhalb der Methode insert(). Alles was die Methode braucht, bekommt sie als Parameter übergeben. Da muss nichts mehr eingelesen werden. Das ist nicht die Aufgabe der Methode!

Das gilt auch für die Ausgabe innerhalb der Methode. Die gehört da auch nicht hin.

Einzige Aufgabe der Methode ist es die übergebene zahl zu prüfen, ob sie gültig an der durch x,y definierten Stelle eingesetzt werden kann und diese dann in das Array zu schreiben.

Für das andere Problem zeig mal den gesamten Code zur Darstellung des Sudoku.
 
K

Kunzen

Mitglied
Vielen Dank. D.h ich muss im main Bereich für int x und int y die In.readInt() einlesen und die Grenzwerte 1-9 festsetzen und diese beiden zahlen in int zahl speichern, dann in der insert() Methode bekomme ich wieder int zahl und überprüfe ob an der Stelle 1. die Werte gültig sind und ob das Feld leer ist?

Sudoku Code:
public class Sudoku {
    static int[][] zweidimArray = new int[9][9];

    public static void main(String[] args) {
        showSudoku();

    }

    static void showSudoku() {

        /*
         * Sudoku Ausgabe wie im Bild. 3x3 Quadrate durch Begrenzungen sichtbar machen.
         * D.h immer bei Zeile 1-9 und Spalte 1,3,6 und 9 kommt ein | Leere Felder
         * sollen mit einem Punkt dargestellt werden.
         */
        System.out.print("-----------------------");

        if (zweidimArray[1][0] != 0) {

            System.out.print(zweidimArray[1][0] + " ");
        }
        zweidimArray[0][4] = 6;
        zweidimArray[4][7] = 3;
        zweidimArray[4][8] = 1;
        zweidimArray[6][2] = 4;
        zweidimArray[7][5] = 9;
        zweidimArray[1][0] = 2;
        for (int i = 0; i < zweidimArray.length; i++) {
            System.out.println();
            for (int j = 0; j < zweidimArray[i].length; j++) {
                // System.out.print( zweidimArray[i] [j] );

                // Index zugreifen mit Modulo-Operator
                if (j % 3 == 0) {
                    System.out.print("| ");

                }

                if (zweidimArray[i][j] == 0) {
                    System.out.print(". ");
                } else {
                    System.out.print(zweidimArray[i][j]);
                }
            }
            if (i % 3 == 2) {
                System.out.println("");
                System.out.print("-----------------------");
            }

        }
    }

    static void insert(int x, int y, int zahl) {
        /**
         * Wenn x-te Zeile und y-Spalte leer dann Wert mit zahl übergeben x-Zeile und
         * y-Spalte dürfen nur im Bereich 1-9 liegen. Wenn nicht alle Werte gültig ||
         * wenn Feld != 0 dann macht die Methode nichts. for (int x = 0; x <
         * zweidimArray.length; x++) { System.out.println(); for (int y = 0; y <
         * zweidimArray[i].length; y++) {
         *
         *
         */

        if (x == 0) {

            zahl = In.readInt();
            if (x <= 9 && x >= 1) {
                System.out.print(zweidimArray[zahl]);
            }
        }
        if (y == 0) {
            zahl = In.readInt();
            if (y <= 9 && y >= 1) {
                System.out.print(zweidimArray[x][y]);
            }
        }
        /*
         * for (x = 0; x < zweidimArray.length; x++) { x = In.readInt();
         * System.out.println(); for (y = 0; y < zweidimArray[x].length; y++) { } }
         */

    }

}
 
K

Kunzen

Mitglied
ist es so richtig?
Aber irgendwie weiß ich jetzt nicht wie ich die Eingaben inser() übergeben soll
Java:
int x = In.readInt("Gebe dein Wert ein: ");
int y = In.readInt("Nun der zweite Wert: ");
int[] zahlen = new Int[1];
zahlen[0] = x;
zahlen[1] = y;
 
temi

temi

Top Contributor
ist es so richtig?
Wie wäre es ungefähr so:
Java:
int x = In.readInt("Gebe die X-Position ein: ");
int y = In.readInt("Gebe die Y-Position ein: ");
int zahl = In.readInt("Gebe die Zahl ein: ");
insert(x,y,zahl); // die drei Variablen werden als Parameter an die Methode übergeben

Wenn ihr diese Aufgabe mit Methoden und Parametern bekommen habt, dann müsstest du das doch auch mal beigebracht bekommen haben, wie das grundsätzlich funktioniert. Privat? Schule? Studium?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Sudoku prüfen Java Basics - Anfänger-Themen 13
S GUI-Programmierung Sudoku-Rätsel lösen Java Basics - Anfänger-Themen 1
J Sudoku mehrere Lösungen Java Basics - Anfänger-Themen 29
J Sudoku Blocküberprüfung Java Basics - Anfänger-Themen 9
S Sudoku Checker Frage Java Basics - Anfänger-Themen 1
G Sudoku Java Basics - Anfänger-Themen 3
S Methoden Java Sudoku Solver Java Basics - Anfänger-Themen 2
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
A Sudoku mit Backtracking lösen Java Basics - Anfänger-Themen 3
L Sudoku Backtracking Pseudocode Java Basics - Anfänger-Themen 3
L Sudoku Löser Java Basics - Anfänger-Themen 9
V Sudoku-Solver Probleme bei der Fehlerbehandlung Java Basics - Anfänger-Themen 12
H Unterquadrate bei Sudoku füllen Java Basics - Anfänger-Themen 9
D Sudoku lösen mit Backtracking Java Basics - Anfänger-Themen 20
M Sudoku-Löser: Fragen zu Pointer und Rekursion Java Basics - Anfänger-Themen 15
S Bisschen hilfe beim Sudoku Lösen benötigt Java Basics - Anfänger-Themen 7
X Sudoku Backtracking Java Basics - Anfänger-Themen 6
S Sudoku hilfe Java Basics - Anfänger-Themen 4
M Sudoku Rekursiv lösen Java Basics - Anfänger-Themen 9
N Sudoku/BLocküberprüfung Java Basics - Anfänger-Themen 24
F Sudoku Grid zeichnen Java Basics - Anfänger-Themen 2
C Frage zu Sudoku Java Basics - Anfänger-Themen 20
MEETyA NullPointer Exception - Sudoku Java Basics - Anfänger-Themen 2
J Sudoku-ähnliche Aufgabe Java Basics - Anfänger-Themen 3
G Sudoku rekursiv lösen Java Basics - Anfänger-Themen 10
Antoras Sudoku Java Basics - Anfänger-Themen 3
F sudoku generieren Java Basics - Anfänger-Themen 16
B Sudoku! Java Basics - Anfänger-Themen 26
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
C Arrays - deklarieren, initialisieren? Ist das ein Objekt? Java Basics - Anfänger-Themen 3
T Vertikales Histogramm mit Arrays Java Basics - Anfänger-Themen 3
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
F Arrays: Mathematische Funktion Java Basics - Anfänger-Themen 19
mihe7 Von Datentypen und (mehrdimensionalen) Arrays Java Basics - Anfänger-Themen 4
A Teilen eines Arrays Java Basics - Anfänger-Themen 5
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
L If und else bei 2 Dimensionalen Arrays Java Basics - Anfänger-Themen 8
1 Arrays Java Basics - Anfänger-Themen 7
M Rückgabe eines Arrays Java Basics - Anfänger-Themen 10
L Addition von Arrays über die Parameterliste Java Basics - Anfänger-Themen 11
Z Erste Schritte Indexe innerhalb eines Arrays zusammensählen Java Basics - Anfänger-Themen 14
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
S Übergabe von Arrays an Methoden Java Basics - Anfänger-Themen 20
D Collections Arrays in ArrayList abspeichern Java Basics - Anfänger-Themen 6
A Freie Stelle eines Arrays Java Basics - Anfänger-Themen 17
H Ein gegebenes Int Array zu Zwei Arrays zurück geben Java Basics - Anfänger-Themen 6
J 2D Arrays summieren Java Basics - Anfänger-Themen 21
J zwei String Arrays miteinander vergleichen Java Basics - Anfänger-Themen 18
A Java.util.Arrays Java Basics - Anfänger-Themen 15
T Methodenverknüpfung mit Arrays Java Basics - Anfänger-Themen 4
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
B Arrays Java Basics - Anfänger-Themen 4
P Arrays "automatisch" erstellen lassen Java Basics - Anfänger-Themen 12
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
H Gemeinsame Schnittmenge zweier Arrays ausgeben Java Basics - Anfänger-Themen 12
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
A Summe des Arrays pd mit alternativer Schleife Java Basics - Anfänger-Themen 2
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
F Mehrdimensionale Arrays Java Basics - Anfänger-Themen 12
M Arrays in Funktion Kopieren und Bearbeiten Java Basics - Anfänger-Themen 4
W Erste Schritte Arrays befüllen und ausgeben Java Basics - Anfänger-Themen 11
J Inhalte von zwei Arrays vertauschen?! Java Basics - Anfänger-Themen 6
Curtis_MC Erzeugung mehrdimensionaler Arrays Java Basics - Anfänger-Themen 2
O zwei Arrays nach Werten durchsuchen und zusammenfügen Java Basics - Anfänger-Themen 3
F Arbeiten mit Arrays Java Basics - Anfänger-Themen 2
D Wert des Arrays unter Bedingungen ändern Java Basics - Anfänger-Themen 1
M Werte des Arrays addieren Java Basics - Anfänger-Themen 5
L Zufällige Übereinstimmungen in 2 Arrays Java Basics - Anfänger-Themen 3
A Arrays kombinieren (länge eines Arrays kann 0 sein) Java Basics - Anfänger-Themen 6
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19
iman Variablen Dynamik Arrays Java Basics - Anfänger-Themen 9
R Arrays Java Basics - Anfänger-Themen 4
A Methoden Arrays Java Basics - Anfänger-Themen 20
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
V Probleme mit Arrays Java Basics - Anfänger-Themen 8
S Arrays erstellen Java Basics - Anfänger-Themen 6
D Ergebnisse in Arrays ausgeben? Java Basics - Anfänger-Themen 11
M Die Inhalte eines Arrays mit der Methode Arrays.toString ausgeben Java Basics - Anfänger-Themen 4
R Weitergabe von Arrays aus Methoden in andere Klasse Java Basics - Anfänger-Themen 5
scratchy1 vollständige und unvollständige Arrays ausgeben Java Basics - Anfänger-Themen 11
L Tiefe Kopie einer Zeile eines zweidimensionalen Arrays Java Basics - Anfänger-Themen 1
L Dynamische Anzahl an Arrays mit verschiedenen Namen erzeugen Java Basics - Anfänger-Themen 6
L Addition von 1 bis n, in Arrays umstellen Java Basics - Anfänger-Themen 15
M Deklarieren und Initialisieren von Arrays Java Basics - Anfänger-Themen 3
O Arrays sortieren in einer Methode Java Basics - Anfänger-Themen 2
E Mehrere Arrays addieren mit Übertrag Java Basics - Anfänger-Themen 13
B Frage zu Arrays Java Basics - Anfänger-Themen 3
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
F Arrays im Konstruktor Java Basics - Anfänger-Themen 5
E Methoden 2 Arrays sortieren (MergeSort) Java Basics - Anfänger-Themen 3
R 2D Arrays mit vorgegebenem Muster Java Basics - Anfänger-Themen 2
R Auf eine Stelle [i] des Arrays zugreifen Java Basics - Anfänger-Themen 7
M Methoden Arrays.deepequals() funktioniert nicht Java Basics - Anfänger-Themen 2
O Länge eines Arrays Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Anzeige

Neue Themen


Oben