# Sudoku



## Nortix (13. Mai 2012)

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.


```
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);
        //}
        
    }
```


----------



## Gast2 (13. Mai 2012)

1) Nein, das liegt daran dass problem und matrix das SELBE array sind: 
	
	
	
	





```
problem=matrix;
```
2) Prüf ob der Index außerhalb des Arrays liegt: 
	
	
	
	





```
if (i < 0 || i >= matrix.length)
```


----------



## Nortix (13. Mai 2012)

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 
	
	
	
	





```
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?


----------



## Gast2 (13. Mai 2012)

Du musst das Array kopieren, bspw. so:

```
problem = matrix.clone();
```


----------

