Forse ti sfugge la differenza fra le due forme del metodo substring() di String:

1) La versione con 2 parametri
substring(int start, int end)
Restituisce la sottostringa di caratteri dal carattere in posizione start (compreso) al carattere in posizione end (escluso)

2) La versione con 1 solo parametro (quella che hai usato tu):
substring(int start)
Restituisce la sottostringa di caratteri dal carattere start (compreso) fino alla fine della stringa.

In particolare, la tua scrittura ( substring(0) ) di fatto restituisce l'intera stringa.


Ciao.