Mira cuando vas a utilizar envolventes debes de saberlas utilizar al igual que los castings, los castings solo se pueden realizar bien entre Objetos o solo entre datos primitivos con coherencia, no vás a trasnformar un String "ASDF" a un Integer, sería algo ilógico, pero bueno, para realizar la asignación int que tu posees hay un método del Integer que dá el valor int...
Código:
int i=((Integer)(cadena.charAt(h+1))).intValue();
cualquier cosa si no sale me avisas...
ciao...