So das hier soll ein Sudokulöser sein allerdings versagt er an einer Stelle immer vllt hat ja von euch einer ne idee 
Code:
public class Sudoku
{
int [] [] [] Sudoku = new int [10] [10] [10];
private int Anzahl_Zahlen=0;
public void Sudoku()
{
while (Anzahl_Zahlen<81)
{
for (int Reihe=1;Reihe<=9;Reihe++)
{
for (int Position=1;Position<=9;Position++)
{
if (Sudoku [Reihe] [Position] [0]==0)
{
if (nurnoch_1_wert(Reihe, Position)>1)
{
for (int i=1;i<=9;i++) // Überprüfung Reihe
{
int p = Sudoku [Reihe] [i] [0];
if (p > 0)
{
Sudoku [Reihe] [Position] [p]=0;
}
}
for (int j=1;j<=9;j++) // Überprüfung Spalte
{
int q = Sudoku [j] [Position] [0];
if (q >0)
{
Sudoku [Reihe] [Position] [q]=0;
}
}
int k1=7;
int k2=7;
if (Reihe==1 || Reihe==2 || Reihe == 3)
{k1=1;}
if (Reihe==4 || Reihe==5 || Reihe == 6)
{k1=4;}
if (Position==1 || Position==2 || Position == 3)
{k2=1;}
if (Position==4 || Position==5 || Position == 6)
{k2=4;}
int lala=k1;
for (int k=k2;k<k2+3;k++) // Überprüfung Kästchen(3x3)
{
if (k==k2+2 && k1<lala+2)
{k=k2; k1++;}
if (Sudoku [k1] [k] [0] != 0)
{
Sudoku [Reihe] [Position] [Sudoku [k1] [k] [0]]=Sudoku [k1] [k] [0];
}
}
}
else
{
// IST DIESER BLOCK RICHTIG???????
Sudoku [Reihe] [Position] [0]= Sudoku [Reihe] [Position] [welche_stelle(Reihe, Position)];
Anzahl_Zahlen++;
}
}
}
}
}
int scheissprog=1;
int zZz=1;
while (zZz<10)
{
System.out.println ();
System.out.print(Sudoku [zZz] [scheissprog] [0]);
System.out.println ();
scheissprog++;
if (scheissprog >9)
{
zZz++;
scheissprog=1;
}
}
}
public void rest_füllen()
{
int a=1;
for (int i=1;i<10;i++)
{
if (Sudoku [a] [i] [0]<1)
{
for (int j=1;j<=9;j++)
{
Sudoku [a] [i] [j]=j;
}
}
if (i==9&&a<9)
{
i=1;
a++;
}
}
}
public void Sudoku_füllen(int a,int b, int c,int d,int e,int f, int g,int h, int i,int j)
{
if (b>0){Anzahl_Zahlen++;}
if (c>0){Anzahl_Zahlen++;}
if (d>0){Anzahl_Zahlen++;}
if (e>0){Anzahl_Zahlen++;}
if (f>0){Anzahl_Zahlen++;}
if (g>0){Anzahl_Zahlen++;}
if (h>0){Anzahl_Zahlen++;}
if (i>0){Anzahl_Zahlen++;}
if (j>0){Anzahl_Zahlen++;}
Sudoku [a] [1] [0]=b;
Sudoku [a] [2] [0]=c;
Sudoku [a] [3] [0]=d;
Sudoku [a] [4] [0]=e;
Sudoku [a] [5] [0]=f;
Sudoku [a] [6] [0]=g;
Sudoku [a] [7] [0]=h;
Sudoku [a] [8] [0]=i;
Sudoku [a] [9] [0]=j;
}
public int nurnoch_1_wert(int a, int b)
{
int c=0;
for (int i =1;i<=9;i++)
{
if (Sudoku [a] [b] [i] > 0)
c++;
}
return c;
}
public int welche_stelle(int a, int b)
{
int c=0;
for (int i=1;i<=9;i++)
{
if (Sudoku [a] [b] [i] >0)
{
c=i;
i=10;
}
}
return c;
}
}