Hola, el código es correcto. Le veo una cosa mejorable: el código además de funcionar hay que intentar que sea lo más claro y entendible posible. En este caso por ejemplo no veo necesidad de usar una variable i, se podría resolver usando sólo la variable j (lo cual es más simple, cuanto más simple mejor). También hubiera sido posible solucionarlo con un bucle for. Código:
import java.util.Scanner;
public class TestDelDoWhile { //Prueba del do ... while curso aprenderaprogramar.com
public static void main (String [ ] Args) {
System.out.println("Ingrese una palabra");
String entrada = "";
Scanner entradaScanner = new Scanner(System.in);
entrada = entradaScanner.nextLine();
int contador = 0 ;
int j=0;
do { System.out.println ("Letra " + (contador+1)+ ": " +entrada.substring(j,j+1) );
contador += 1;
j++;
} while (contador<entrada.length()); }
}