Na początku a = ' ' więc odpalana jest pierwsza gałąź kodu w instrukcji IF. Później warunek nie jest spełniony, wykonuje się widocznie (to zależy co podasz na wejściu, jaki string) zawsze blok kodu po else, domyślam się, że a już nigdy nie jest równe ' '. Metoda toUpperCase(s.charAt(i))); sprawia, że znak na i-tym miejscu jest duży.