The Scanner class has methods to accept numeric (int/double) and String input. There is no method to accept input of a char.

Accepting char input

Scanner fromKeyboard = new Scanner(;

System.out.print("First letter of first name: ");
char firstInitial = fromKeyboard.nextLine().charAt(0);

System.out.print("First letter of last name: ");
char lastInitial = fromKeyboard.nextLine().charAt(0);


System.out.println("First initial: " + firstInitial);
System.out.println("Last initial: " + lastInitial);

nextLine is used to accept String input. charAt is used to obtain the first character of the input as a char.

See Working with String objects for more details about charAt and other String methods.

This approach works if the user actually enters a single character in response to each prompt. If the user enters more than 1 character in response to a prompt, the code silently ignores the remaining characters. If the user enters 0 characters in response to a prompt (just presses enter), the call to charAt crashes with a StringIndexOutOfBoundsException.

Accepting and validating char input

The example below assumes that fromKeyboard has been declared and initialized as a Scanner reading from the keyboard.

System.out.print("Enter a lowercase letter: ");
String response = fromKeyboard.nextLine();

while(response.length() != 1 ||
        response.charAt(0) < 'a' ||
        response.charAt(0) > 'z')
    System.out.println("\nInvalid input");
    System.out.print("Enter a lowercase letter: ");
    response = fromKeyboard.nextLine();

System.out.println("Letter: " + response.charAt(0));

This is a standard input validation loop. The while condition evaluates to true when the input is not valid. The order of the expressions is important. Checking response.length() != 1 first ensures that charAt will not be called if the user enters 0 characters.

See Input validation and Input validation as String for more details on the technique.


Comment on Taking input of a char