Sudoku Kommandozeile

Ich glaube eine "einfache" Variante gibt es da nicht..
Eine Möglichkeit wäre es Spalten mit einem Komma zu trennen und Zeilen mit einem Semikolon. Leere Felder kannst du mit irgendeinem beliebigen Zeichen oder sonstigem angeben.
Code:
java -jar sodoku.java 0,1,2,#,5,#,#,8,9,4;#,4,0,2,1,...
 
Solange es nur Zahlen von 1 bis 9 sind kannst du sie auch einfach aneinanderreihen. Das ist am einfachsten einzugeben wenn man ein Sudoku vom Blatt eingibt. 0 für leer tut's auch:

0001040780304005011030409806704...
 
Wo ist der Unterschied?
Das Eingabeformat bleibt das selbe.
Ob du es nun als Argument beim Ausführen des Programms eingibst oder während das Programm läuft ist doch egal.
 
Ich habe das jetzt so versucht:
Code:
int Matrix[][]=new int[8][8];
        Scanner sc = new Scanner(System.in);
        int eingabe =sc.nextInt();
        for(int m=0; m<Matrix.length; m++) {
            for(int n=0; n<Matrix.length; n++) {
               
                Matrix[m][n]=eingabe;
            }
        }
Dann kommt aber eine Exception: Exception in thread "main" java.util.InputMismatchException. Und den Zeilenwechsel bekomme ich auch nicht hin.
 
Hallo.

Also die Eingabe würde kein InputMismatchException verursachen.
Zudem fragst du nur einmal nach einer Eingabe.

Und dann fühlst du das Array mit dieser Eingabe. Also es steht im ganzen Array 123456789.

Im Stacktrace steht in welcher Zeile der Fehler auftritt.

Grüße
 
Wenn du alle Ziffern am Stück einlesen willst, musst du beim Scanner next() benutzen, dann den String aufsplitten und erst dann in Zahlen umwandeln. 81 Ziffern sind zu lang für ein int.
Außerdem ist deine Matrix zu klein. Beim initialisieren musst du die Länge angeben, also 9.
 
Ich habe das jetzt so gemacht:
Java:
int Matrix[][] = new int[9][9];
        Scanner sc = new Scanner(System.in); // Scanner zur Eingabe       
        for (int m = 0; m < 9; m++) {
            String eingabe = sc.nextLine();
            for (int n = 0; n < 9; n++) {

                Matrix[m][n] = eingabe.charAt(n) - '0'; 
            }
        }
Hat vielleicht noch jemand Verbesserungsvorschläge?
 

Zurück
Oben