¿Índice de cadenas fuera de límites? (Java, bucle de subcadena)

Este programa que estoy haciendo para un curso COSC no se está compilando correctamente, sigo recibiendo el error:

Excepción en el hilo "main" java.lang.StringIndexOutOfBoundsException: Índice de cadena fuera de rango: 2

en java.lang.String.substring (String.java:1765) en VowelCount.main (VowelCount.java:13)

Aquí está mi código:

import java.util.Scanner;

public class VowelCount {
 public static void main(String[] args) {
  int a = 0, e = 0, i = 0, o = 0, u = 0, count = 0;
  String input, letter;
  Scanner scan = new Scanner (System.in);

  System.out.println ("Please enter a string: ");
  input = scan.nextLine();

  while (count <= input.length() ) {
   letter = input.substring(count, (count + 1));

   if (letter == "a") {
    a++; }
   if (letter == "e") {
    e++; }
   if (letter == "i") {
    i++; }
   if (letter == "o") {
    o++; }
   if (letter == "u") {
    u++; }

   count++;

  }
  System.out.println ("There are " + a + " a's.");
  System.out.println ("There are " + e + " e's.");
  System.out.println ("There are " + i + " i's.");
  System.out.println ("There are " + o + " o's.");
  System.out.println ("There are " + u + " u's.");
 }
}

Que yo sepa, esto debería funcionar, pero ¿por qué no? Cualquier ayuda sería genial. ¡Gracias!

Respuestas a la pregunta(5)

Su respuesta a la pregunta