Help Urgente

Galera estou com um problema … e o seguinte… tenho um metodo q substitui as vogais por exemplo … se eu passar á,à,ã… ele substitui por A, se eu passar ú,ù ele troca pro U… e assim para todas as vogais… mas o problema e o seguinte… se eu passar o a letra A ele passa norma pois nao precisa alterar agora se eu passar o á ele me retorna o seguinte nao sei pq mas logo no comeco da funcao eu sou um length e qdo e passado o á ele conta como se a String tivesse tamanho 2 e nao 1… sendo que se eu passar a letra A ele vai normal. outra coisa… qdo eu passo a letra Á no charAt ele me traz a primeira vez o simbolo |- e na segunda o simbolo í sendo q ele nao era para entra nessa segunda vez… e outra coisa… pelo q eu vi o unicode trabalha com hexadecima… tem como eu recuperar esse valor de uma letra??

public static String substituiVogais(String _palavra){

  int _contador;
  int _valorAscii;
  char _caracter;
  String _result = "";
  int _totalPalavra;
  
  _totalPalavra = _palavra.length(); 
  for(_contador = 0; _contador <= (_totalPalavra - 1); _contador++){
     
     _caracter = _palavra.charAt(_contador);
     _valorAscii = (int) _caracter;
     
     if(!( (_valorAscii > 96) && (_valorAscii < 123) )){
        
        if(((_valorAscii > 191) && (_valorAscii < 198)) || ((_valorAscii > 223) && (_valorAscii < 230))){
           _caracter = 'A';
        }
        else if(((_valorAscii > 199) && (_valorAscii < 204)) || ((_valorAscii > 231) && (_valorAscii < 236))){
           _caracter = 'E';
        }
        else if(((_valorAscii > 204) && (_valorAscii <208)) || ((_valorAscii > 235) && (_valorAscii < 240)) || ((_valorAscii ==121) && (_valorAscii == 89))){
           _caracter = 'I';
        }
        else if(((_valorAscii > 209) && (_valorAscii < 215)) || ((_valorAscii > 241) && (_valorAscii < 247))){
           _caracter = 'O';
        }
        else if(((_valorAscii > 216) && (_valorAscii < 221)) || ((_valorAscii > 248) && (_valorAscii < 253))){
           _caracter = 'U';
        }
     }
     if(((_valorAscii > 64) || (_valorAscii < 91)) || (_caracter == ' ')){
        _result = _result + _caracter;
     }
     
  }
  System.out.println(_result);
  return _result;

}

public static void main(String args[]){

  substituiVogais("ã");

}

Se você ta utilizando ASCII, Ì e À são coisas muito diferentes da letra, assim como à e Ç…

Ao invés de utilizar valores ASCII utilize Unicode, é bem mais abrangente e não tem esses problemas com nossos acentos…