My program compiles perfectly, but whenever I try to run it throws a NullPointerException. I tried searching this up, and found that the error relates to some value being null while the program is trying to use it, but I re-checked everything and came up blank.
Here's the error:
java.lang.NullPointerException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272) The code:
import javax.swing.*; import java.util.Scanner; public class WorldsMostBoringGame { public void main (String [] args) { System.out.println("You are in a room with a locked door and a key."); Scanner keyboard = new Scanner(System.in); boolean hasKey = false, doorOpen = false, amIDoneYet = false, monsterAlive = true; while (!amIDoneYet) { String userInput = keyboard.nextLine(); if (userInput == "look around") LookAround(hasKey); else if (userInput == "get key") GetKey(hasKey, monsterAlive); else if (userInput == "open door") OpenDoor(doorOpen, hasKey, amIDoneYet); else if (userInput == "kill monster") KillMonster(monsterAlive); else System.out.println(userInput+ " is not a recognized command."); } } public boolean GetKey(boolean hasKey, boolean monsterAlive) { if (hasKey == false && monsterAlive == false) System.out.println("You pick up the key."); else if (hasKey == true && monsterAlive == false) System.out.println("You already picked up the key."); else if (monsterAlive == true) { System.out.println("You must kill the monster first."); return hasKey = false; } return hasKey = true; } public void LookAround(boolean hasKey) { if (!hasKey) System.out.println("You are in a room with a locked door and a key."); else System.out.println("You are in a room with a locked door. You have a key."); } public boolean OpenDoor(boolean doorOpen, boolean hasKey, boolean amIDoneYet) { if (hasKey) { System.out.println("You unlock the door. Game over. You win."); amIDoneYet = true; return doorOpen; } else { System.out.println("The door is locked. Find a key."); return doorOpen = false; } } public boolean KillMonster(boolean monsterAlive) { System.out.println("You kill the monster."); return monsterAlive = false; } }
==on Strings :(public void main (String [] args)should bepublic static void main (String [] args)