java.lang.ArrayIndexOutOfBoundsException: 1 , método split

4 respostas
B

Boa Tarde , implementei o seguinte código que tinha como objetivo receber uma linha de entrada e quebrá-la em array através do método split. Mas quando executo o código aparece o seguinte erro java.lang.ArrayIndexOutOfBoundsException: 1 . Já aumentei o tamanho do array para testar se podia ser o problema mas não resolveu. Obrigada !

class Teste{
	String linha= "";
	String[] info;
	Pessoa pessoa = new Pessoa();

	linha = MyIO.readLine();
	info = new String[8]; 
	
	info = linha.substring(4).split("##"); 	

		int id = Integer.parseInt(info[0]);
		String nome = info[1];
		String nacionalidade = info[2];
		String dataNasc = info[3];
		String localNasc = info[4];
		String dataMorte = info[5];
		String localMorte = info[6];
		int idade = Integer.parseInt(info[7]);

		pessoa.setId(id);
		pessoa.setNome(nome);
		pessoa.setNacionalidade(nacionalidade);
		pessoa.setNascimento(dataNasc);
		pessoa.setLocalNascimento(localNasc);
		pessoa.setMorte(dataMorte);
		pessoa.setLocalMorte(localMorte);
		pessoa.setIdade(idade);

}

4 Respostas

peczenyj

verifica o tamanho do array antes de sair pegando os elementos. pode ser que tenha um campo a menos sabe-se la pq…

B

Já verifiquei isso , inclusive printei o array na tela e os elementos estavam nas posições correspondentes.

CWeiler

O erro é bem específico, índice “1” não existe no array.

A não ser que a mensagem de erro se refira a outro trecho de código, o seu split está retornando um array de apenas 1 elemento, pois o índice “0” está funcionando, e, inclusive, não está lançando exceção na conversão para número.

A linha “info = new String[8];” não te garante nada e é código inútil, o array “info” terá o tamanho que o método “split” retornar.

Uma das linhas da sua entrada não possui “##”, ou você testa esta condição ou corrige a entrada.

B

Obrigada

Criado 20 de setembro de 2016
Ultima resposta 21 de set. de 2016
Respostas 4
Participantes 3