2017-04-26 3 views
1

Ok Hallo Leute. Ich versuche einen Code für das Spiel Othello zu entwickeln. Ich bin auf eine Frage gestoßen, mit der ich Hilfe brauche. Ich möchte wissen, wie man die Eingabe von Int und Char in einem einzigen Scanner durchführt. Zum Beispiel, wenn Benutzer geben D für Spalte und 6 für die Reihe, woud es so aussiehtEin int und ein char-Eingang mit einem Scanner lesen?

enter image description here

Was ich will, ist in der Lage sein, das Board mit dem neuen Ort zu ziehen, wenn der Benutzer D6 tritt statt Wenn ich separat nach Spalte und Zeile frage, möchte ich, dass die Scannereingabe auf einmal ausgeführt wird. Ich habe das ganze Web durchgesehen, konnte aber nicht zu einem Ergebnis kommen. Dies ist der Code ich brauche Hilfe mit

Antwort

2

Ich würde vorschlagen, lesen Sie eine ganze Zeile, dann analysieren, was Sie brauchen.

Hinweis: Diese Lösung funktioniert nur für Kombinationen aus einzelnen Zeichen/Ziffern. Verwenden Sie einen regulären Ausdruck, wenn Sie etwas Komplexeres möchten.

public static void main (String args[]){ 
    char column; 
    int row; 
    Scanner scan = new Scanner(System.in); 
    Othello game = new Othello(); 
    //game.startGame(); 

    while (true) { 

     game.displayBoard(); 

     do { 
      System.out.print("Enter the column, then row, for example (A0): "); 
      String line = scan.nextLine(); 
      column = line.charAt(0); 
      row = Integer.parseInt("" + line.charAt(1)); 
     } while (!(game.checkColumn(column) && game.checkRow(row));  //loop until input is valid 

     game.takeTurn(column, row); // Remove game as a parameter here. It is not needed 

     // if (gameOver) break; 
    } 
} 
+0

dank ein Bündel Sie half mir – liang123

0

Es ist erwähnenswert, dass Scanner Leerzeichen getrennten Eingang als Folge von Werten gelesen werden, so etwas wie dies funktionieren würde, wenn der Benutzer „D 6“:

System.out.println("Enter ROW COL: "); 
char column = scan.next().charAt(0); 
int row = scan.nextInt(); 
scan.nextLine(); // clear new line 

, auf Wenn auf der anderen Seite wollen Sie „D6“ lesen, dann müssen Sie die Eingabe als String und extrahieren Komponenten aus manuell lesen:

System.out.println("Enter ROWCOL: "); 
String raw = scan.next(); 
char column = raw.charAt(0); 
int row = Character.getNumericValue(raw.charAt(1)); //get 2nd digit as int 
scan.nextLine(); // clear new line 
+0

danken y Ou so sehr – liang123