Hallo Forum-User,
der nachfolgende Quelltext ist deshalb so lang, um Verständisprobleme von vornherein auszuräumen. Im wesentlichen wundert mich die Ausgabe die aus den drei for-Schleifen am Ende des Quelltextes resultiert.
Und zwar folgendes: Auf der Kosole wird ausgegeben:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Wieso wird
1) z nicht erhöht, bleibt also 0 und
2) wieso wird nicht angezeigt "Das Sudoku wurde nicht gelöst", denn wenn ich das zweite Element aus der ersten Zeile habe und prüfe auf doppeltes Vorkommen, wird ja bei koordinate [z][0] angefangen und p inkrementiert. wenn jetzt e und p gleich sind, befindet man sich auf dem exakt identischen Feld, was die Fehlermeldungzufolge haben müsste, diese wird aber nicht ausgegeben("Sudoku wrde nicht gelöst")
lg
PS: Ich weiß, dass ich nicht der ertse bin, der Sudokus auf Korrektheit überprüfen möchte, hier geht es mir aber in ertser Linie darum, den Fehler zu kennen, weniger um den perfekten Lösungsalgorithmus eines Sudokus, denn ich weiß, dass ich weder 3x3 Kästchen noch Spalten auf die Richtigkeit hin prüfe.
der nachfolgende Quelltext ist deshalb so lang, um Verständisprobleme von vornherein auszuräumen. Im wesentlichen wundert mich die Ausgabe die aus den drei for-Schleifen am Ende des Quelltextes resultiert.
Java:
public class Sudoku2
{
public static void main (String[] args)
{
// Initialisierung der Zahlen: Felder -> Zeilen; Element -> Spalten
int koordinate[][] =
{
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9},
{1,2,3,4,5,6,7,8,9} };
// Initialisierung der Laufvariablen
int z = 0;
int e = 0;
// Methodenaufruf (Bringt de Zahlen in zugehörige Reihen und Spalten)
setzahlen(koordinate, z, e);
}
public static void setzahlen(int koordinate[][], int z, int e)
{
// Zeilen werden um 1 erhöht
for( ; z <= 8; z++ )
{
// Spalten werden um 1 erhöht
for( ; e <= 8; e++)
{
System.out.print(koordinate[z][e] + " ");
}
System.out.println();
// Initialisierung von s, damit wieder bei Spalte 1(0) angefangen wird
e = 0;
}
z = 0; // Zeile
e = 0; // Element
int p = 1; //Element in der selben Zeile wie e. Hiermit wird ein doppeltes Vorkommen von e geprüft
for( ; z <= 8; z++)
{
for( ; e <= 8; e++ )
{
for( ; p <= 8; p++)
{
if (koordinate[z][e] == koordinate[z][p])
{
System.out.println("Das Sudoku wurde nicht gelöst");
}
else
{
System.out.println("Zeile " + z + " ist Fehlerfrei");
}
}
}
}
}
}
Und zwar folgendes: Auf der Kosole wird ausgegeben:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Zeile 0 ist Fehlerfrei
Wieso wird
1) z nicht erhöht, bleibt also 0 und
2) wieso wird nicht angezeigt "Das Sudoku wurde nicht gelöst", denn wenn ich das zweite Element aus der ersten Zeile habe und prüfe auf doppeltes Vorkommen, wird ja bei koordinate [z][0] angefangen und p inkrementiert. wenn jetzt e und p gleich sind, befindet man sich auf dem exakt identischen Feld, was die Fehlermeldungzufolge haben müsste, diese wird aber nicht ausgegeben("Sudoku wrde nicht gelöst")
lg
PS: Ich weiß, dass ich nicht der ertse bin, der Sudokus auf Korrektheit überprüfen möchte, hier geht es mir aber in ertser Linie darum, den Fehler zu kennen, weniger um den perfekten Lösungsalgorithmus eines Sudokus, denn ich weiß, dass ich weder 3x3 Kästchen noch Spalten auf die Richtigkeit hin prüfe.
Zuletzt bearbeitet: