Sudoku

N

Nortix

Gast
Tag,
bin habe einen Sudokusolver gefunden und möchte diesen erweitern. Es soll die Ausgangssituation um immer eine eingegebene Zahl erweitert werden. Sprich ich habe die vorgegebenen Zahlen und vergleiche die umliegenden Felder mit der Lösung und meiner Eingabe.
Jetzt stoße ich auf 2 Probleme:

1. Ich speichere die Ausgangssituation in ein extra Array namens "problem", dann löse ich die Ausgangssituation und speichere die Lösung im Array "lösung". Wenn ich mir jetzt aber "problem" ausgeben lasse, hat es die gleichen Werte wie "lösung". Liegt das am static Kontext beider Arrays? Wie könnte man dies anders lösen?

2. Beim testen der umliegenden Felder passiert es, dass ich aus der Reichweite der Arrays komme. Eine ArrayIndexOutOfBoundException wird geworfen. Leider fällt mir dazu auch keine Lösung ein, wie man dies geschickt meistern könnte.

Java:
public static void main(String[] args) {
        int[][] matrix = parseProblem(args);
        System.out.println("Matrix:");
        writeMatrix(matrix);
        problem=matrix;
        System.out.println("Problem:");
        writeMatrix(problem);
        if (solve(0,0,matrix)){ 
            System.out.println("Matrix geloest:");
            writeMatrix(matrix);
        }
        else
            System.out.println("keine Lösung");
            //boolean done=false;
            
        System.out.println("Problem nach Lösung:");
        writeMatrix(problem);
        
        
        
        
        System.out.println("Eingabe folgt:");
         //while(!done){
            int i = input.nextInt();
            System.out.println(i +" zahl");
            eingabe(i);
            writeMatrix(problem);
        //}
        
    }
 
G

Gast2

Gast
1) Nein, das liegt daran dass problem und matrix das SELBE array sind:
Code:
problem=matrix;
2) Prüf ob der Index außerhalb des Arrays liegt:
Code:
if (i < 0 || i >= matrix.length)
 

Nortix

Mitglied
Erstmal danke für die Antwort und ich entschuldige mich für den zweiten Thread :-(

Dann habe ich die ganze Zeit den Irrglauben mit mir getragen, dass mit
Code:
problem=matrix;
nur die Werte gleich werden.
Wie könnte ich dies lösen?


Kann ich den Startpost nicht mehr ändern, den ich leider als Unregistriert gepostet habe?
 
G

Gast2

Gast
Du musst das Array kopieren, bspw. so:
Java:
problem = matrix.clone();
 

Neue Themen


Oben