passar de string para uma tabela de char
Boas pessoal, ainda relativamente ao exercício de pilhas com recursividade...
o meu método de geração de sequências é o seguinte:
public static void geraSequencias(int tam, int num_is, int num_os, String sequencia){
if(tam==(tamanho_sequencia*2)){
System.out.println(sequencia);
/*if(compara(sequencia)==true)
System.out.println("Sequências correctas: "+sequencia);*/
}
else{
tam++;
if(num_is<tamanho_sequencia)
geraSequencias(tam, num_is+1, num_os, sequencia+"i");
if(num_os<tamanho_sequencia)
geraSequencias(tam, num_is, num_os+1, sequencia+"o");
}
}
Eu queria utilizar uma tabela de char[] em vez da String sequencia como parâmetro deste método. Elaborei este código:
public static void geraSequencias(int tam, int num_is, int num_os, char sequencia[]){
if(tam==(tamanho_sequencia*2)){
System.out.println(sequencia);
/*if(compara(sequencia)==true)
System.out.println("Sequências correctas: "+sequencia);*/
}
else{
tam++;
if(num_is<tamanho_sequencia)
sequencia[tam]='i';
geraSequencias(tam, num_is+1, num_os, sequencia);
if(num_os<tamanho_sequencia)
sequencia[tam]='o';
geraSequencias(tam, num_is, num_os+1, sequencia);
}
}
Quando chamo o método dou como parâmetros os valores: gereSequencias(-1, num_is_maximo, num_os_maximo, sequency);
O valor 0 corresponde ao index inicial da tabela de char, que vai sendo incrementada até ao tamanho_maximo que ela poderá ter. Começa em 0, uma vez que depois será inicialmente incrementada no método...
num_is_maximo e num_os_maximo corresponde, respectivamente, ao número de i´s e número de o´s que a sequencia pode suportar.
sequency é a tabela de char -> char sequency[]=new char[tamanho_maximo];
Aqui o problema é que me dá StackOverFlow.
Input:
a
a
OutPut:
[
ijava.lang.ArrayIndexOutOfBoundsException: 2 (...)
Supostamente, o resultado deveria corresponder ao mesmo que usando Strings (que está bem!):
Input:
a
a
Output:
[
io
oi
]
Alguma ajuda please!
Obrigado