So I am having some issues opening, reading, going through, and closing a file in my code. For the project we are asked to create a program that will ask a user to either log on or register. When my user enters register, I can't get my password coding to work. Everything compiles correctly, and runs, but it doesn't do what i want it to. Its supposed to have between 6 and 22 characters where it has at least one uppercase, one lowercase and one number.
Then, when the user chooses to log on, I can't get my program to properly read through the file that I have created...it comes up with the message "Exception in thread "main" java.lang.NullPointerException" in three different spots.

here is my code:
 /**
* WoWDriver.java
* driver for WoWAccount
* @author LJones
* @version 3/16/2011 v.1
* reference: Corrine Chancellor 
*/
 
   import java.util.Scanner;
	import java.io.*;
 
   public class WoWDriver
   {
		static String filename = "users.txt";
 
      public static void main(String[] args)
      {
         Scanner input = new Scanner(System.in);
 
      	//do
 
         	helloMenu();   	
         	String choice = input.nextLine().toUpperCase();
				{
       		  	if(choice.equals("REGISTER"))
         		{
          		     	register(input);
 
     		     	}
    	     		else if(choice.equals("LOG ON"))
 					{
 							log_on(input);						 				
         		}
					else
					{           		
						System.out.println("An un-recognized command has been received."
						+ "\nPress Enter to Continue:"); 
					}  
				}	
     	}
 
      public static void helloMenu()
      {
         System.out.println("Please type in your selection:\n"
			+ "Register Or Log on");	
      }
 
      public static void register(Scanner input)
      {			
   		String username = null;
			do
			{
				System.out.println("Enter a Username:");
  		      	username = input.next();
			}while(  WoWAccount.okUserName(username) == false);  
 
 
			WoWAccount.okUserName(username);
			//look for a method that excepts okUserName
			//it will return a boolean
 
    		String password = null;
			do
			{
				System.out.println("Enter a Password:");
					password = input.next();
			}while (  WoWAccount.okPassword(password) == false);
			input.nextLine(); //to consume the extra new line character;
         WoWAccount account = new WoWAccount(username, password);		
			System.out.println("Congratulations! You have successfully created an account.\n"
				+ "Username: " + account.getUsrName()+ "\nPassword: " + account.getPassword());      
 
			// saving the user's password and username to file "users.txt"
 
			PrintWriter output = null;
			//True = append to file, false = erase existing given data
			try
			{
				FileWriter fWriter = new FileWriter(filename, true);
				output = new PrintWriter(fWriter);
 
				output.println(username + " " + password);
			}
			catch(IOException e)
			{
				System.out.println("ERROR");
			}
			finally
			{
				if (output !=null)
					output.close();
			}   
		}
 
      public static void log_on(Scanner input)
		{
			String username = null;
			String password = null;
			do 
			{
				System.out.println("Enter your username:");
					username = input.next();
				System.out.println("Enter your password:");
					password = input.next();
			}while( WoWAccount.log_on(username, password) == true);
 
			WoWAccount.log_on(username, password);
			System.out.println("Thank you for visiting us again.  Enjoy your time here!");
		}
	}

and here is the other file

 /**
* WoWAccount.java
* main for WoWAccount
* @author LJones
* @version 3/16/2011 v.1
* reference: Corrine Chancellor 
*/
 
import java.util.Scanner;
import java.io.*;
 
public class WoWAccount
{
	private String username;
	private String password;
	static String filename = "users.txt";
 
	public WoWAccount(String usrName, String pwd)
	{
		username = usrName;
		password = pwd;
	}
 
	public void setUsrName(String usrName)
	{
		username = usrName;
	}
 
	public void setPassword(String pwd)
	{
		password = pwd;
	}
 
	public String getUsrName()
	{
		return username;
	}
 
	public String getPassword()
	{
		return password;
	}
 
	public static boolean okUserName(String userNameEntered)
	{
		Scanner input = null;
		try
		{
			input = new Scanner(new File(filename));
 
			while(input.hasNext())
			{
				String curUserName = input.next();
			//	String curPswd = input.nextLine();
 
				if(userNameEntered.equals(curUserName))
					return false;
			}
			return true;
		}
		catch(FileNotFoundException e)
		{
			System.out.println("The file does not exist");
		}
 
		return false;
 
	}
 
	public static boolean okPassword(String passwordEntered)
	{
		//identifying variables
		int countU = 0;
		int countL = 0;
		int countD = 0;
		int i;
 
		{			
			int passwordEnteredLength = passwordEntered.length();
 
			//begin if-else for password length
			if ((passwordEnteredLength > 5) && (passwordEnteredLength < 21))
			{
				for(i = 0; i < passwordEnteredLength; i++)
				{
					if(Character.isUpperCase(passwordEntered.charAt(i)))
					{
						countU = countU++;
					}
				} //end "for" for uppercase count
 
 
				for(i = 0; i < passwordEnteredLength; i++)
				{
					if(Character.isLowerCase(passwordEntered.charAt(i)))
					{
						countL = countL++;
					}
 
				} //end "for" for lowercase count
 
 
				for(i = 0; i < passwordEnteredLength; i++)
				{
					if(Character.isDigit(passwordEntered.charAt(i)))
					{
						countD = countD++;
					}
				}  //end "for" for digit count
 
				//determining if the password meets requirements
				if ((countU > 0) && (countL > 0) && (countD > 0))
					return false;
				else
					{
					System.out.println("Must have at least one uppercase, one lowercase and one number included. \n" +
												"Please try again.");
					}
					return true;
 
			} //end "if" part of password length if-else
			else
			{
				System.out.println("Your password must be between 6 and 20 characters");
				return false;
			}
		}
	} //end okPassword string method
 
	public static boolean log_on (String enteredUserName, String enteredPassword)
	{
		Scanner input = null;
		try
		{
			File file = new File(filename);
			Scanner readFile = new Scanner(file);
 
			while(readFile.hasNext())
			{
				String username = input.next();
				String password = input.nextLine();
 
				if((enteredUserName.equals(username)) && (enteredPassword.contains(password)))
					return true;
			}
			return false;
		}
		catch (FileNotFoundException e)
		{
			System.out.println("The file does not exist");
		}
		finally
		{
			if (input != null)
				input.close();
		}
 
		return false;
	}
}

Thank you for taking your time to look over my coding!! You're helping a very new to programming individual!!