2017-12-12 2 views
0

Ich versuche, Eingabemuster matrix.Each Muster-Dataset wird aus einer ganzen Zahl auf einer Zeile von sich selbst, die die Abmessungen des Quadrats enthält das Muster (die Größe reicht von 1 bis 10). Die folgenden Zeilen enthalten jede Zeile des ersten Musters und des zweiten Musters nebeneinander, getrennt durch ein Leerzeichen. Eingang wird wie folgt aussehen2D-Array-Eingabe ohne Leerzeichen

5 
X...X ....X 
.X... ...X. 
...X. .X... 
..X.X ..X.. 
....X XX..X 

Ich mag versucht haben, unter

Scanner input= new Scanner(System.in); 
    int n= input.nextInt(); 
       char [][] pattern1=new char[10][10]; 
       char [][] pattern2=new char[10][10]; 
       for(int i=0;i<n;i++){ 
        for(int j=0;j<n;j++){ 
         pattern1[i][j]=input.next().charAt(0); 
        } 
        for(int j=0;j<n;j++){ 
         pattern2[i][j]=input.next().charAt(0); 
        } 
       } 

Das Problem ist, ich habe nach jedem Zeichen zusätzlichen Platz zu treffen. so was.

5 
X . . . X . . . . X 
. X . . . . . . X . 
. . . X . . X . . . 
. . X . X . . X . . 
. . . . X X X . . X 

Aber ich muss ohne zusätzlichen Platz lesen. Kann mir jemand diesbezüglich helfen?

+0

Welcher Typ ist 'Eingabe'? Und was sagt die Dokumentation für diesen Typ, dass 'next()' tut? – slim

+0

Ich nehme eine Eingabe vom Typ "char" (Punkt (.) Oder Kreuz (X)). – Yonex

+0

Ich vermute, 'Input' ist ein' Scanner' - aber deine Frage hätte gesagt, was es ist. – slim

Antwort

1

Angenommen, input ist ein Scanner, das ist, was es tut. Von seinem Javadoc:

Ein Scanner bricht seine Eingabe in Token mit einem Trennzeichen, das standardmäßig Leerzeichen entspricht.

Sie verwenden einen Scanner wenn Sie ein Token ein zu einer Zeit begrenzt konsumieren wollen.

Sie könnten stattdessen eine DataInputStream verwenden, die hat.

Oder Sie könnten Stick mit Scanner und nextLine() verwenden, um eine Linie im Wert von X s und . s zu greifen, und Schleife durch diese String.

String line = input.nextLine(); 
for(int j=0; j<line.length(); j++) { 
    pattern1[i][j]=line.charAt(j); 
} 

Aber auch hier, wenn Sie einen Scanner nicht auf ein Trennzeichen teilen wollen, warum auf der Erde verwenden Sie? Das ist buchstäblich sein einziger Zweck.

Verwandte Themen