[RESOLVIDO] java.lang.IndexOutOfBoundsException

Galera,

to tendo um problema de java.lang.IndexOutOfBoundsException quando alista passada pro método: calcularMedianaParaDificuldadeFacil();
tem apenas um elemento…

alguem pode me dar uma ajuda?

Obrigado,

Paulo Henrique Amorim

public class Estatistica {

private List<Long> lista;

public Estatistica(List<Long> lista){
	this.lista = lista;
	
	
}

public Long calcularMedianaParaDificuldadeFacil(){
	List<Long> listaAux = lista.subList(0, (lista.size()/2));
	
	int tipo = listaAux.size() % 2;
	
	if(tipo == 1){
		return listaAux.get( ((listaAux.size() + 1) / 2) - 1);	
	
	} else {
		int m = listaAux.size() / 2;    		
		return (listaAux.get(m - 1) + listaAux.get(m)) / 2;
	}
	
	
}

É o seguinte…

quando passado apenas 1 elemento na lista…

   final int m = listaAux.size() / 2;

a variavel m do tipo int está fikando com valor 0, porque o tamanho da lista é igual a 1 … e vc divide por 0… daria decimal… como é inteiro… fika 0 para variavel

aí no trecho abaixo vc tenta pegar na lista a posição -1

return (listaAux.get(m - 1) + listaAux.get(m)) / 2;

pois o m é igual a 0 e vc subtrai 1…

esse é o motivo do erro…

basta tratar essa condição…

Valeu pela dica cara, tinha resolvido e esquecido de atualizar aqui no forum… mas muito obrigado…

Paulo Henrique Amorim.