Yeah, changing the return on those conditions to false corrected it... I'm not quite sure why...
My conditions were that if it wasn't true (if the user's string was not equal to one of those specified) that it would return true (meaning it's not valid) and would throw an exception... so what exactly did I do wrong? The compare function returns 0 if the two strings are equal, doesn't it?