ArrayIndexOutOfBoundsException: 1

5 respostas Resolvido
java
jairodione

Olá Pessoal!

Estou tentando gravar em uma matriz o nome, sexo e idade da pessoa. O algoritmo funciona corretamente “da forma que desejo” somente com um cadastro, se for acrescentado mais de uma informação o sistema da erro: Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 1
at estruturadedados.Exercicio8rQ8.main
Java Result: 1

Abaixo está o código:

//inicio do metodo construtor

public static void main(String args[]){

String nome[][] = new String[1][3];

String n = “”, s = “”, i = “”,x = “”;

//inicio do laço for

for(int l = 0; l <= 1;l++){

//inicio do laço for interno

for(int c = 0; c <= 1;c++){

n = JOptionPane.showInputDialog("Digite o nome: ");

s = JOptionPane.showInputDialog("Digite o sexo: ");

i = JOptionPane.showInputDialog("Digite a idade: “);

nome[l][c] = n+” “+s+” "+i;

x += nome[l][c];

}//fim do laço for interno

x += “\n;

}//fim do laço for

JOptionPane.showMessageDialog(null, x, Informações Digitadas pelo Usuario, JOptionPane.INFORMATION_MESSAGE);

}//fim do metodo

5 Respostas

wldomiciano

Nos loops use “<” ao invés de “<=”

jairodione

Olá wldomiciano!

Não funcionou!

Fiz o seguinte:

for(int l = 0; l < 1;l++){

//inicio do laço for interno

for(int c = 0; c < 1;c++){

n = JOptionPane.showInputDialog("Digite o nome: ");

s = JOptionPane.showInputDialog("Digite o sexo: ");

i = JOptionPane.showInputDialog("Digite a idade: “);

nome[l][c] = n+” “+s+” "+i;

x += nome[l][c];

}//fim do laço for interno

x += “\n;

}//fim do laço for

JOptionPane.showMessageDialog(null, x, Informações Digitadas pelo Usuario, JOptionPane.INFORMATION_MESSAGE);

Da forma como esta descrito acima funciona, mas somente para um cadastro! Se eu fizer a alteração como está descrito abaixo:

for(int l = 0; l < 2;l++){

//inicio do laço for interno

for(int c = 0; c < 2;c++){

n = JOptionPane.showInputDialog("Digite o nome: ");

s = JOptionPane.showInputDialog("Digite o sexo: ");

i = JOptionPane.showInputDialog("Digite a idade: “);

nome[l][c] = n+” “+s+” "+i;

x += nome[l][c];

}//fim do laço for interno

x += “\n;

}//fim do laço for

JOptionPane.showMessageDialog(null, x, Informações Digitadas pelo Usuario, JOptionPane.INFORMATION_MESSAGE);

Dá o seguinte erro; Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 1
at estruturadedados.Exercicio8rQ8.main(.java:26)
Java Result: 1

A linha do erro é esta; nome[l][c] = n+" “+s+” "+i;

wldomiciano
Solucao aceita

É porque vc criou um array com new String[1][3].

Pro I < 2 funcionar, vc teria que colocar 2 na criação do array também: new String[2][3]. Tem que mudar a quantidade nos dois lugares.

Faz o seguinte, muda seus loops pra:

int x = 1, y = 3;
String nome[][] = new String[x][y];

for(int l = 0; l < x; l++) {
  for(int c = 0; c < y; c++) {
      /* ... */
  }
}

Então sempre que quiser mais cadastros, mude o valor de x ou y e tudo deve continuar funcionando independente da quantidade.

jairodione

Olá widomiciano!

Fiz um pouco diferente, mas baseado na orientação. Abaixo está o descrito o código :

//inicio do metodo construtor

public static void main(String args[]){

String nome[][] = new String[3][3];

String n = “”, s = “”, i = “”,x = “”;

//inicio do laço for

for(int l = 0; l < 3;l++){

//inicio do laço for interno

for(int c = 0; c < 3;c++){

n = JOptionPane.showInputDialog("Digite o nome: ");

s = JOptionPane.showInputDialog("Digite o sexo: ");

i = JOptionPane.showInputDialog("Digite a idade: “);

nome[l][c] = n+” “+s+” "+i;

x += nome[l][c];

}//fim do laço for interno

x += “\n;

}//fim do laço for

JOptionPane.showMessageDialog(null, x, Informações Digitadas pelo Usuario, JOptionPane.INFORMATION_MESSAGE);

}//fim do metodo

OBS.: AGORA IREI TRABALHAR NA ORDENAÇÃO POR NOME REALIZADOS NESTE CADASTRO

Muito Obrigado, widomiciano!

wldomiciano

Que legal, valeu pelo feedback.

Criado 1 de novembro de 2017
Ultima resposta 4 de nov. de 2017
Respostas 5
Participantes 2