first commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import java.util.Scanner;
|
||||
|
||||
/**
|
||||
* A class that reads input lines from the user.
|
||||
* Input is filtered via getCommand for valid commands.
|
||||
*
|
||||
* @author David J. Barnes and Michael Kölling.
|
||||
* @version 2016.02.29
|
||||
*/
|
||||
public class Parser
|
||||
{
|
||||
// Hold all valid command words.
|
||||
private CommandWords commands;
|
||||
private Scanner reader;
|
||||
|
||||
public Parser()
|
||||
{
|
||||
commands = new CommandWords();
|
||||
reader = new Scanner(System.in);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the next command from the user.
|
||||
* The returned command will be valid.
|
||||
* @return A valid command.
|
||||
*/
|
||||
public String getCommand()
|
||||
{
|
||||
String command = null;
|
||||
do {
|
||||
// Print a prompt.
|
||||
System.out.print("> ");
|
||||
|
||||
String word = reader.next();
|
||||
// Discard the rest of the line.
|
||||
readLine();
|
||||
if(commands.isCommand(word)) {
|
||||
command = word;
|
||||
}
|
||||
else{
|
||||
System.out.println("Unrecognized command: " + word);
|
||||
System.out.print("Valid commands are: ");
|
||||
commands.showAll();
|
||||
}
|
||||
} while(command == null);
|
||||
|
||||
return command;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print out a list of valid command words.
|
||||
*/
|
||||
public void showCommands()
|
||||
{
|
||||
commands.showAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return A line of text from the user.
|
||||
*/
|
||||
public String readLine()
|
||||
{
|
||||
return reader.nextLine();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user