KingKrypton
KingKrypton

Reputation: 65

java.lang.NullPointerException form user input

Hey guys I'm trying to create a loop until a correct character choice is entered by the user. When I enter a wrong choice I get the error java.lang.NullPointerException. It might be with the way I'm inputing but I don't want to change that if I don't have to. choice is a private member of the class.

char wf() { 
    Scanner input = new Scanner(System.in); 
    System.out.println("What is your choice? (x/o)"); 
    choice = input.findInLine(".").charAt(0);

    while (choice != 'x' && choice != 'o') { 
        System.out.println("You must enter x or o!");
        choice = input.findInLine(".").charAt(0);
    }

    return choice; 
}//end wf

Upvotes: 1

Views: 1017

Answers (3)

change your code like below

char wf() { 
Scanner input = new Scanner(System.in); 
System.out.println("What is your choice? (x/o)"); 
if(input.findInLine(".") !=null){
choice = input.findInLine(".").charAt(0);
while (choice != 'x' && choice != 'o') { 
    System.out.println("You must enter x or o!");
    choice = input.findInLine(".").charAt(0);
 }
}
return choice; 
}//end wf

Upvotes: 1

Tsung-Ting Kuo
Tsung-Ting Kuo

Reputation: 1170

Change the function as below (I have tested this code):

char wf() { 
    Scanner input = new Scanner(System.in); 
    System.out.println("What is your choice? (x/o)"); 
    char choice = input.findInLine(".").charAt(0);

    while (choice != 'x' && choice != 'o') { 
        System.out.println("You must enter x or o!");
        choice = input.next().charAt(0);
    }

    return choice; 
}//end wf

Upvotes: 1

ergonaut
ergonaut

Reputation: 7057

Check input.findInLine(".") to see if it null. If you don't have the expected input, it won't return anything..

Upvotes: 1

Related Questions