2017-10-03 3 views
-1


ich überprüfen müssen, ob ein Scanner dies hält: „add (jede ganze Zahl hier)“ Hier ist der Code:Wie kann man überprüfen, ob ein Scanner eine bestimmte Zeichenfolge ist + eine positive ganze Zahl [Java]

import java.util.Scanner; 
public class BottleGame { 
    void startGame() { 
     System.out.println("Welcome to the bottle game! Please type \"help\" to learn about the game."); 
     System.out.println("If you already know how the game works, feel free to start!"); 
     Scanner scanner = new Scanner(System.in); 
     commands(scanner); 
    } 
    void commands(Scanner myScanner) { 
     boolean again = false; 
     do { 
      String response = myScanner.next(); 
      if (response.equals("help")) { 
       System.out.println("+------------------------+"); 
       System.out.println("help - brings up this menu"); 
       System.out.println("add X - makes X bottles"); 
       System.out.println("remove X - deletes X bottles"); 
       System.out.println("flip - flips a bottle"); 
       System.out.println("+------------------------+"); 
       again = true; 
      } 
      //Need to check if response equals "add" + any integer here 
     } 
     while(again == true); 
    } 
} 

Ich habe die Stelle kommentiert, wo ich diese brauche, bitte schaue im Code nach. Jede Hilfe wäre willkommen. Danke im Voraus!

+1

Verwendung Regex verwenden. Randnotiz, bitte ersetzen Sie 'while (wieder == true)' mit 'while (wieder)' – Oleg

+0

Hallo, ich bin neu in Java, also bin ich mir nicht sicher, wie man regex benutzt. Welche Regex wäre für das Beispiel richtig? –

+1

'add \\ d +' findet 'add421' oder eine andere Zahl. – Oleg

Antwort

1

Sie können einen regulären Ausdruck für diese, so etwas wie "add\\s+\\d+", die das Wort durch eine oder mehrere Leerraum, gefolgt übereinstimmen hinzufügen und dann eine oder mehrere Ziffern mit String.matches(String)

} else if (response.matches("add\\s+\\d+")) { 
    System.out.println("Add"); 
} 

, um dann diesen Wert parsen könnten Sie die Ziffern-Gruppe und String.replaceAll(String, String) aufrufen und dann Integer.parseInt(String) wie

} else if (response.matches("add\\s+\\d+")) { 
    int v = Integer.parseInt(response.replaceAll("add\\s+(\\d+)", "$1")); 
    System.out.println(v); 
} 
+0

Danke. Wie könnte ich die Zahlen (d +) in eine int-Variable speichern? –

+0

@Lyfe https://Stackoverflow.com/a/13440560/2308683 –

+0

Hallo, dieser Code hier funktioniert nicht: if (response.equals ("add \\ s + \\ d +")) { String newResponse = response.replaceAll ("[^ 0-9] +", ""); System.out.println (neueResponse); } (Sorry wegen schlechter Formatierung) Irgendwelche Ideen, warum das nicht funktioniert? Nichts druckt aus. –

Verwandte Themen