Ich hab das mal etwas kommentiert und "arbeitsfähig" gemacht, ohne den logischen Ablauf zu ändern. Mir scheint es allerdings so, als ob du die vorhergehenden Aufgaben nicht wirklich bearbeitet hast
Btw: schon länger kein Java mehr gemacht, daher keine Garantie auf Java-Coding-Convention "Korrektheit"
Code:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Sudoku {
static String[] dateiZeilen=new String [9];
//static final char TRENNER=';';
//static int[][] sudokuarray=new int[10][10]; <--- Warum 10x10 Feld?
static int[][] sudokuarray = new int[9][9];
// (0) Klammerung einheitlich gestalten
// (1) Benennung sollte eigentlich in englisch sein ;)
// (2) Variablen/Methodennamen sollten zwar aussagekräftig,
// aber trotzdem möglichst kurz gehalten werden ;)
public static int[][] leseTxtIn2DArray() throws IOException
{
String zahlencode = "sudoku.txt";
FileReader fileReader;
try
{
fileReader = new FileReader (zahlencode);
BufferedReader bufferedReader = new BufferedReader(fileReader);
//(3) indentation einheitlich gestalten!
//for(int x=0;x<zahlencode.length();x++) <---
// soll also solange einlesen, wie der Dateiname lang ist? ;)
// lieber: entweder festkodieren oder solange Datei noch lesbar ist
// hier die einfache Variante:
for (int i = 0; i < sudokuarray.length; i++)
{
//for(int i=0;i<zahlencode.length();i++) <---
//hier das gleiche - der Dateiname hat nix mit der Datei selbst
//am Hut
for (int j = 0; j < sudokuarray[0].length; j++)
{
int input;
//wir wollen nur Zahlen 0 bis 9 haben, den Rest ignorieren
do
{
input = bufferedReader.read();
// -1 wird zurückgegeben, wenn die Datei zu Ende ist, da wir und aber in der Zeit immer
// noch in der Schleife befinden, heißt es schlicht, dass die Sudokudatei nicht 9x9 Feld entspricht
if (input == -1)
//Hier sollte man vielleicht eine passendere Exception nachschlagen - dazu war ich aber zu faul ;)
throw new IOException("Datei unvollständig");
}while (Character.isDigit(input) != true);
//kürzer und gebräuchlicher:
//while (!Character.isDigit(input))
sudokuarray[i][j] = Character.digit(input, 10);
}
}
}catch (FileNotFoundException e)
{
System.out.println("Datei wurde nicht gefunden");
}catch (IOException e)
{
e.printStackTrace();
}
return sudokuarray;
}
public static void prettyPrint2DArray(int[][] arr)
{
for (int i = 0; i < arr.length; i++)
{
for (int j = 0; j < arr[0].length; j++)
System.out.print(arr[i][j]);
System.out.println();
}
}
public static void main(String[] args) throws IOException
{
leseTxtIn2DArray();
// was passiert, wenn beim Einlesen ein Fehler aufgetreten ist?
// sollte das Array dann lieber nicht ausgegeben werden?
System.out.println(sudokuarray[0][8]);
prettyPrint2DArray(sudokuarray);
}
}