0

Sorry if this is a stupid question, but I'm very new to java. Basically we are learning about interfaces and maps right now in my java class. I created an interface that is really simple, and have also created other classes that implement that interface. In my class that is a main actor, I am creating a map and I've created instances of these as you can see below. I'm getting a NPE and I am not sure why.

private Scanner input;
private Map<String, Command> map;

//~ Constructors ..........................................................
// ----------------------------------------------------------
/**
 * Creates a new Rocket object that reads commands
 * from a predefined URL (the URL is in the lab assignment).
 */
public Rocket()
{
    this(IOHelper.createScannerForURL(
            "http://courses.cs.vt.edu/~cs1114/Fall2012/rocket-commands.txt")
            );

}

// ----------------------------------------------------------
/**
 * Creates a new Rocket object that reads commands
 * from the given scanner.
 * @param scanner The scanner to read commands from.
 */
public Rocket(Scanner scanner)
{
    input = scanner;
    map = new HashMap<String, Command>();
    ForwardCommand forward = new ForwardCommand(this);
    map.put("forward", forward);
    LeftCommand left = new LeftCommand(this);
    map.put("left", left);
    RightCommand right = new RightCommand(this);
    map.put("right", right);
}

//~ Methods ...............................................................
// ----------------------------------------------------------
/**
 * Reads one word from the scanner (if there is any), and executes
 * the corresponding command.  If the scanner has no words remaining,
 * then nothing happens.
 */
public void act()
{
    if (input.hasNext())
    {
        String word = input.next();

        map.get(word).execute();
    }
}

}

The error is coming on the line map.get(word).execute();

I'm sure it is something obvious, but I am very new to coding so any help would be appreciated!

Chris
  • 1
  • Run the app in debug mode and set a breakpoint in the line which throws the exception (you can get the line from stack trace in the console). It's very simply to find such bugs using built-in debuggers in popular IDEs (Eclipse, Idea, Netbeans). – Mike Wojtyna Apr 13 '17 at 00:16
  • Post the main function that calls `act()` – Peter Apr 13 '17 at 00:20

0 Answers0