2017-01-08 4 views
0

Ich mache eine Matrix, die Konsolen-Software auf Java löst.nextInt() Java-Eingabe in derselben Zeile

Was ich versuche zu tun ist, dass jeder "geben" Schlüssel ein Leerzeichen statt Pause in anderen, um eine Zeile und so weiter zu erstellen.

Wenn der Benutzer ein INT eingibt und dann "EINGABE" drückt, unterbricht es die Matrix.

Dies ist mein Code so weit:

Scanner scanner = new Scanner(System.in);//.useDelimiter("\\s+"); 

    for(int i = 0; i < matrix.length; i++) { 
     System.out.print("| "); 
     for(int j = 0; j < matrix[i].length; j++) { 
      matrix[i][j] = scanner.nextInt(); 
     } 
     System.out.print("|"); 
     System.out.println(""); 
    } 
    scanner.close(); 
    System.out.println("Done"); 

Irgendwelche Ideen?

Danke!

+0

'nextInt()' kein Newline verbrauchen, was ist das Problem. – Natecat

+0

Sie können das Verhalten der Eingabetaste nicht ändern, aber warten Sie nicht einfach, bis der Benutzer die gesamte Zeile eingegeben hat – Moira

Antwort

1

Ich glaube nicht, das möglich ist, so dass ich einen anderen Weg vorschlagen:

Statt Enter zu verwenden und auf die Linie zurückkehren, warum Sie nicht alle Ihre Werte schreiben und trennen Sie diese mit einem Raum oder eine spezifische Begrenzer, also wenn Sie drücken beenden eingeben, um die nächste Zeile zurückzukehren, um die nächste Zeile wie folgt zu prüfen:

1 2 3 4 5 
5 6 7 8 9 

Dann können Sie Ihre Werte wie folgt aus:

String line = scan.nextLine(); 
String[] row = line.split(" "); 

Dann verwenden Sie die String[], um Ihre int Werte zu erhalten?

Dies kann Ihnen helfen.

0

Im Konsolenmodus geben Sie ein: Geben Sie ein: das ist eine Bruchkante.

Ihr Problem zu lösen, können Sie die Dinge anders tun konnte:

  • Sie nehmen eine Benutzereingabe ohne Berücksichtigung Formatierung.
  • Nach jeder Eingabe zeigen Sie das tatsächliche Ergebnis des Matrixobjekts erneut an.
    Auf diese Weise formatieren Sie es wie Sie möchten, können Sie sogar ein Sonderzeichen die Position der nächsten Zahl anzeigen, um vom Benutzer zu füllen.

Mit Ihrem aktuellen Code könnte es wie folgt aussehen:

Scanner scanner = new Scanner(System.in);//.useDelimiter("\\s+"); 

for(int i = 0; i < matrix.length; i++) { 
    for(int j = 0; j < matrix[i].length; j++) { 
     matrix[i][j] = scanner.nextInt(); 
     displayActualMatrix(matrix) 
    } 
} 
scanner.close(); 
System.out.println("Done"); 
... 

private void displayActualMatrix(int[][] matrix){ 
    for(int i = 0; i < matrix.length; i++) { 
     for(int j = 0; j < matrix[i].length; j++) { 
       // rendering the matrix 
      } 
     } 
    ... 
} 
Verwandte Themen