Ich bin auf eine Fehlermeldung gestoßen mit der ich überhaupt garnichts anfangen kann.
"class, interface or enum expected" kommt bei mir unglaubliche 41 mal ... -.-
Ich poste der übersichtlichkeit halber nicht den ganzen code sondern nur den Ausschnitt.
Es soll eine 9x9 Array erzeugt werden welches mit zufälligen Zahlen befüllt werden soll um dann zu prüfen ob es eine gültige Lösung im Sudoku wäre.
Wenn ich aber meine Methode zum Zeilen und Spalten prüfen aufrufe, kommt besagter Fehler.
Java:
staticbooleanpruefeZeilen(int[][] sudoku){int x =0;boolean[] zeile =newint[9];for(int i=0; i<9; i++){for(int j=0; j<9; j++){
x = x + sudoku[j][i];}if(x==45) zeile[i]=true;else zeile[i]=false;}if((zeile[0]&& zeile[1]&& zeile[2]&& zeile[3]&& zeile[4]&& zeile[5]&& zeile[6]&& zeile[7]&& zeile[8])==true)returntrue;elsereturnfalse;}
Ich weiß leider auch garnicht was der Fehler bedeutet
Zwei Tipps zur Codeverschlankung:
- Ausdrücke, die direkt einen boolean-Wert ergeben braucht man nicht mit ==true zu prüfen, es reicht, sie direkt hinzuschreiben.
- Wenn von einem solchen Ausdruck der return-Wert einer Methode abhängt, die selbst wieder boolean zurück gibt, braucht man überhaupt kein if
Und der Fehler kommt durch Schreibfehler in dem Teil des Codes, den man hier nicht sieht. Mögliche Ursachen:
- Bei Klassendefinition das Schlüsselwort class vergessen oder falsch geschrieben
- Durch Fehlerhafte {}-Klammersetzung ist Code aus dem Körper der Klasse rausgerutscht
Also bitte mal komplette Klasse posten.
[EDIT]
Oder ist das am Ende Dein ganzer Code!?!. Dat geht natürlich nicht. Code gehört in Klassen rein.
[/EDIT]
@Himbrombeere, julian.veh: Den Fehler hatte ich übersehen, aber aufgrund der späteren Benutzung von zeile (zeile = true; ), glaube ich, dass der TO tatsächlich ein boolean-Array initialisieren wollte.
/*
Ein Programm welches eine 9x9 Matrix erzeugt, diese mit beliebigen Zahlen befüllt und
anschließend auf Sudoku korrektheit prüft.
@Author Aris Konstantinidis Matrikel 3028103
@Tutor Christian Winger
*/publicclassSudoku{publicstaticvoidmain(String[] args){int[][] sudoku =initMatrix();boolean zeile, spalte ;for(int i=0; i<9; i++){for(int j=0; j<9; j++){System.out.printf("%3d", sudoku[i][j]);}System.out.println();}if((zeile =pruefeZeilen(int[][] sudoku)&& spalte =pruefeSpalten(int[][] sudoku))==true){System.out.println("Die Matrix ist eine korrekte Sudoku Lösung !");}else{System.out.println("Die Matrix ist KEINE korrekte Sudoku Lösung !");}}//end Mainstaticint[][]initMatrix(){int[][] feld =newint[9][9];for(int i=0; i <9; i++){for(int j=0; j <9; j++){
feld [i][j]=(int)(10*Math.random());}}return feld ;}staticbooleanpruefeZeilen(int[][] sudoku){int x =0;boolean[] zeile =newboolean[9];for(int i=0; i<9; i++){for(int j=0; j<9; j++){
x = x + sudoku[j][i];}if(x==45) zeile[i]=true;else zeile[i]=false;}if((zeile[0]&& zeile[1]&& zeile[2]&& zeile[3]&& zeile[4]&& zeile[5]&& zeile[6]&& zeile[7]&& zeile[8])==true)returntrue;elsereturnfalse;}staticbooleanpruefeSpalten(int[][] sudoku){int x =0;boolean[] spalte =newboolean[9];for(int i=0; i<9; i++){for(int j=0; j<9; j++){
x = x + sudoku[j][i];}if(x==45) spalte[i]=true;else spalte [i]=false;}if((spalte[0]&& spalte[1]&& spalte[2]&& spalte[3]&& spalte[4]&& spalte[5]&& spalte[6]&& spalte[7]&& spalte[8])==true)returntrue;elsereturnfalse;}/*
static boolean pruefeBloecke(int[][] sudoku) {
for(int z=0 ; z < 3 ; z++) {
for (int s=0 ; s < 3 ; s++) {
for (int i=0 ; i < 3 ; i++) {
for (int j=0 ; j < 3 ; j++) {
}//end 4. for
}//end 3. for
}// end 2. for
}// end 1. for
}
*/}//end class
Hier der ganze Code.
Das Ganze ist noch in Arbeit und die 2 Methoden werden in der main noch nicht aufgerufen.
Den Fehler beim Array habe ich korrigiert, und ich wollte natürlich ein boolean Array erzeugen.
Damit möchte ich ausdrücken das nur wenn das Ergebnis beider Methoden (später dann noch der 3.) true ist, ausgeprintet werden soll das die Sudoku Eigenschaften gegeben sind...
Als Generellen Tipp würde ich dir noch geben, das Programm vernünftig einzurücken. Mit einer IDE wie etwa Eclipse kann man genau festlegen, welchen Stil man haben will und Quellcode auf Knopfdruck in diese Form bringen. Aber auch ohne IDE sollte man sich um konsistente Einrückung bemühen.
Hallo, ich habe eine Anmerkung, bin mir aber nicht sicher,
du schreibst ja, das in einer Zeile die Summe x = 45 sein soll (weil 1+2+3...+9 = 45)
Aber bei random Zahlen kannst du ja auch folgendes bekommen (2+2+2 ... + 9 = 45)
Somit wäre dein Sudoku falsch.
EDIT: okay, wenn spalten,zeilen und blöcke kontrolliert werden, müsste es ja wieder richtig sein.
Sorry.