publicstaticvoidInclusao(charLista[],intn){charcLetra;intiPos=0,iCont;System.out.println("Digite a \"Letra\" que deseja incluir:");cLetra=ConsoleChar();while(iPos<=n&&Lista[iPos]<cLetra){iPos++;}}
O erro indica que você esta tentando acessar uma posição fora do array.
Seu código esta correto, mas no loop while você está tentando acessar uma posição a mais, retire o <= e coloque < apenas deste modo
while(iPos < n && Lista[iPos] < cLetra)
Uma dica você não precisa passar o valor de n como argumento pois um array pode retornar o número de elementos dele proprio da seguinte maneira.
nomeDoArray.length;
F
FaHeCoNPJ
engraçado que do while passou, mais desta comparação não passa…
sub-rotina Inclusao()
publicstaticvoidInclusao(charLista[],intn){charcLetra;intiPos=0,iCont;System.out.println("Digite a \"Letra\" que deseja incluir:");cLetra=ConsoleChar();while(iPos<=n&&Lista[iPos]<cLetra){iPos++;}//*********AQUI DA ERRO***********if(cLetra==cList[iPos]){System.out.println("Letra já existe!");}else{................}}
não entendi o erro… será que estou enviando corretamento os argumentos? porque sempre da erro ai
ERRO
java.lang.ArrayIndexOutOfBoundsException: 1
at Menu.Inclusao(Menu.java:33)
at Menu.main(Menu.java:91)
Exception in thread "main"
V
viniciusprdPJ
Quando ele passa do while quer dizer que a variável iPos já esta com valor maior que n conforme a verificação [color=“red”]ipos <= n[/color] portanto cheque no if se o valor de ipos ja está alem da ultima posição
F
FaHeCoNPJ
Assim… essa parte entendi, tanto que ele passa do while, mais logo seguinte começa algumas condições e da erro.
Fiz esta bateria de testes e ele nao passa do primeiro.
publicstaticvoidInclusao(charList[],intn){charcLetra;intiPos=0;intiCont;System.out.println("Digite a \"Letra\" que deseja incluir:");cLetra=ConsoleChar();while(iPos<n&&List[iPos]<cLetra){System.out.println("passou "+iPos);iPos++;}//INICIO DO ERROif(List[iPos]>cLetra){//FIM DO ERROSystem.out.println("Lista[iPos] > cLetra");}if(List[iPos]<cLetra){System.out.println("Lista[iPos] < cLetra");}if(List[iPos]==cLetra){System.out.println("Lista[iPos] == cLetra");}if(List[iPos]<=cLetra){System.out.println("Lista[iPos] <= cLetra");}if(List[iPos]>=cLetra){System.out.println("Lista[iPos] >= cLetra");}
Nesse ponto do erro, ele para com os seguintes dados:
List = char[0] (id=13)
n = 0
cLetra = A
iPos = 0
e apresenta este erro:
java.lang.ArrayIndexOutOfBoundsException:0
F
FaHeCoNPJ
achei uma solução! fazer um condição caso o vetor esteja nulo(vazio), já impedindo que der erro.
Infelizmente, a condição que aplico, de que (List == null) não da certo.
Alguma alma caridosa poderia me ajuda? hehe
publicstaticvoidInclusao(charList[],intn){charcLetra;intiPos=0;intiCont;System.out.println("Digite a \"Letra\" que deseja incluir:");cLetra=ConsoleChar();while(iPos<n&&List[iPos]<cLetra){iPos++;}if(List==null){System.out.println("Vetor Vazio!");}else{if(List[iPos]==cLetra){System.out.println("Letra já existe!");}else{iCont=n;while(iCont>iPos){List[iCont+1]=List[iCont];iCont++;}List[iPos]=cLetra;System.out.println(List[iPos]);n++;}}}
F
FaHeCoNPJ
achei uma solução! fazer um condição caso o vetor esteja nulo(vazio), já impedindo que der erro.
Infelizmente, a condição que aplico, de que (List == null) não da certo.
Alguma alma caridosa poderia me ajuda? hehe
publicstaticvoidInclusao(charList[],intn){charcLetra;intiPos=0;intiCont;System.out.println("Digite a \"Letra\" que deseja incluir:");cLetra=ConsoleChar();while(iPos<n&&List[iPos]<cLetra){iPos++;}if(List==null){System.out.println("Vetor Vazio!");}else{if(List[iPos]==cLetra){System.out.println("Letra já existe!");}else{iCont=n;while(iCont>iPos){List[iCont+1]=List[iCont];iCont++;}List[iPos]=cLetra;System.out.println(List[iPos]);n++;}}}
V
viniciusprdPJ
Pois é cara, mais ja imaginou o que acontece quando ele chega no final do loop e não encontra um caracter que é menor que cLetra. o seu valor iPos ficará maior que o array e quando você sai do loop e tenta acessar denovo o array na posição iPos encontrará o mesmo erro.
F
FaHeCoNPJ
Poderia me mostrar na pratica? Porque realmente não consigo solucionar.
[ ]`s
Fábio Heleno
F
FaHeCoNPJ
Existe alguma maneira de tratar isto?
char List[]
iPos = 0 char cLetra = A
if(Lista[iPos] == cLetra){System.out.println("Letra já existe!");}
Estou verificando se posição 0 é igual a ‘A’, se não, como no caso está vazio, queria que ele continuasse, mais ele da erro, só avança se eu começar o array com algo dentro. Alguem poderia me ajudar???