for(int i = 0; i < str.length(); i++){ // you problem lies here
if(str.charAt(i) == 'd' && str.charAt(i+1) == 'o' && str.charAt(i+2) == 'g')
Вы используете i < str.length()
в качестве условия завершения цикла , но вы используете str.charAt(i+1)
и str.charAt(i+2)
Поскольку вам необходимо получить доступ к i+2
, вам следует ограничить диапазон i < str.length() - 2
.
for(int i = 0, len = str.length - 2; i < len; i++)
// avoid calculating each time by using len in initialising phase;