Erro de manipulação no array

Alguém poderia me ajudar a saber qual é o problema aqui que está causando erro? Ainda não conseguir descobrir.

[code]import java.io.*;

public class Teste {

public static void main(String[] args) {
	int N = 1;
	int iPos = 0;
	int iCont = N;
	
	char Lista[] = new char[N];
	
	System.out.println("____________________________________");
	System.out.println("             INCLUSÃO");
	System.out.println("¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯");
	System.out.print("Digite uma \"Letra\" >> ");
	char cLetra = LerChar();
			
	while(iPos <= N && Lista[iPos] < cLetra){
		iPos++;
	}
	
	if(Lista[iPos] == cLetra){
		System.out.println("A Letra informada já existe!");
	} else {
		iCont = N;

		while(iCont > iPos){
			Lista[iCont+1] = Lista[iCont];
			iCont++;
		}
			
		Lista[iPos] = cLetra;
		N++;
	}
	
	System.exit(0);
}

public static char LerChar() {
	try {
		BufferedReader BR =	new BufferedReader(new InputStreamReader(System.in));

		String S = BR.readLine();
		return S.charAt(0);
		
	} catch (IOException e) {
		return (' ');
		
	} catch (NumberFormatException e) {
		return (' ');
		
	}
}

}[/code]

Abraços
Fábio Heleno

dae cara, blz>>
pelo q estou vendo, o seu array estah começando com uma única posição, pois N tem o valor 1, e com o valro default…ou seja …acho que eh null…
portanto ao comprar se o conteudo da posicao do array é maior que a letra digitada, ele gera a exceção, pois não consegue comparar null, com o char…
caso não seja isto, se vc analisar , vc verá q estah incrementando o ipos , como na primeira iteração ele eh zero, ele funciona, e entra no while, passando para 1, mas quando ele compara novamente para ver se fica no while o programa reconhece os seguintes dados:
ipos contendo 1 e comparando com N(que eh igual a 1), ele passa por este teste, e logo em seguida ele tenta acessar a posição 1 do array (Lista[Ipos], e talvez gera exceção aqui como arrayIndexOutBound( pois o array tem apenas 1 posição, no caso a posição zero)…

eu não testei o codigo, mas se eu fosse vc, colocaria um println depois das linhas que vc estah en dúvida, para seguir os passos…

Tenta colocar no trecho:

while(iPos <= N && Lista[iPos] < cLetra){ 
         iPos++; 
      } 

Lista.length

acho que dá certo

acabei de testar o seu program e verifiquei que é do arrayIndexOutOfBounf]d mesmo…ou seja, na hora q vc incrementa iPos, ele gera a exceção…
não entendi o que vc quer fazer com este código, senão poderia tentar dar alguma dica…
teh mais…
espero tê-lo ajudado

Ele gera esse erro mesmo.
Eu transformei um metodo em uma classe para postar aqui, mais na realidade é um metodo de uma classe cujo o programa faz inclusao, alteração, exclusão e atravessamento. Trabalho de faculdade.

Vou tentar as dicas que me deram e retorno assim que tentar.

Valeu pela atenção…

Abraços
Fábio Heleno

Conseguir avançar… :viva:

Agora ele aceita o cadastro, mais a cada cadastro novo, ele zera o anterior… hehehe…alguém poderia me ajudar? :wink:

Postei o codigo de tal maneira que basta so copiar e rodar.

Inclusao

[code]import java.io.*;

public class TesteArray {

public static void main(String[] args) {
	int iValorFinal = 0;
	int opcao = 0;
	char Lista[] = new char[iValorFinal];
	
	do{
		System.out.println("\n");
		System.out.println("1 - Inclusao");
		System.out.println("2 - Sair");
		System.out.print("\n==> ");
		opcao = ConsoleInt();
		
		if(opcao == 1){
			System.out.println();
			System.out.println("____________________________________");
			System.out.println("             INCLUSÃO");
			System.out.println("¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯");
			System.out.print("Digite uma \"Letra\" >> ");
			char Letra = ConsoleChar();
				
			Lista = new char[iValorFinal+1];
				
			int iPos = 0;
			int iCont;

			while((iPos < iValorFinal) && (Lista[iPos] < Letra)){
				iPos++;
			}
				
			if(Lista[iPos] == Letra){
				System.out.println("A Letra informada já existe!");
			} else {
				iCont = iValorFinal;
				
				while(iCont > iPos){
					Lista[iCont+1] = Lista[iCont];
					iCont++;
				}
						
				Lista[iPos] = Letra;
				iValorFinal++;
			}
				
			System.out.println();
			int posicao = 0;
			while(posicao < iValorFinal){
				System.out.println("Posição: [" + posicao + "] -> Letra: " + Lista[posicao]);
				posicao++;
			}
			System.out.println();
			System.out.println("Tecle <ENTER> para continuar...");
			ConsoleInt();
		}
		
	}while(opcao != 2);
}

public static char ConsoleChar() {
	try {
		BufferedReader BR =	new BufferedReader(new InputStreamReader(System.in));

		String S = BR.readLine();
		return S.charAt(0);
	} catch (IOException e) {
		return ('0');
	} catch (NumberFormatException e) {
		return ('0');
	}
}
public static int ConsoleInt() {
	try {
		BufferedReader BR =	new BufferedReader(new InputStreamReader(System.in));

		String S = BR.readLine();
		return Integer.parseInt(S);
	} catch (IOException e) {
		return (0);
	} catch (NumberFormatException e) {
		return (0);
	}
}

}[/code]