Sou iniciante em Java e estou tendo problema com esse método abaixo, compila normal, mas ao executar aparece o erro abaixo, quem puder me ajudar agradeço…
private String trataNomeColuna(String str) {
String result = “”;
String[] nomeColuna = new String[2];
nomeColuna[0] = "CODIGO";
nomeColuna[1] = "BANCO";
String[] nomeTratado = new String[2];
nomeTratado[0] = "CODIGO";
nomeTratado[1] = "BANCO";
for (int i = 0; i <= nomeColuna.length; ++i) {
[b]if (str.trim().equals(nomeColuna[i].trim())) {[/b]
result = nomeTratado[i];
break;
}
}
return result;
}
init:
deps-jar:
compile:
run: Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: 2
at br.com.gerson.cadastros.Pesquisa.trataNomeColuna(Pesquisa.java:243)
at br.com.gerson.cadastros.Pesquisa.exibeDados(Pesquisa.java:178)
Fala kra blz? É o seguinte esta exception ArrayIndexOutOfBoundsException, é quando estoura o tamanho do array criado, foi o se caso.
O erro está aqui
for (int i = 0; i <= nomeColuna.length; ++i) {
//Você faz um for de 0 até o tamanho do vetor que é 2
//Mas os indices no java começam com 0
//Então um vetor de posições só tem índices 0 e 1,
/Aí logo abaixo vc faz a comparação
if (str.trim().equals(nomeColuna[i].trim()))
//Aqui ele tenta acessar a posição 2 no ultimo laço do for,
//mas esta posição não existe!!!
Deu pra entender??
Para resolver o erro eh so alterar o for para:
for (int i = 0; i < nomeColuna.length; ++i) { //Trocar <= por menor, assim ele só chega até o 1, e
//não dá o exception