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:
//iniciodometodoconstrutorpublicstaticvoidmain(Stringargs[]){Stringnome[][]=newString[1][3];Stringn=“”,s=“”,i=“”,x=“”;//iniciodolaçoforfor(intl=0;l<=1;l++){//iniciodolaçoforinternofor(intc=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];}//fimdolaçoforinternox+=“\n”;}//fimdolaçoforJOptionPane.showMessageDialog(null,x,“InformaçõesDigitadaspeloUsuario”,JOptionPane.INFORMATION_MESSAGE);}//fimdometodo
Nãofuncionou!Fizoseguinte:for(intl=0;l<1;l++){//iniciodolaçoforinternofor(intc=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];}//fimdolaçoforinternox+=“\n”;}//fimdolaçoforJOptionPane.showMessageDialog(null,x,“InformaçõesDigitadaspeloUsuario”,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(intl=0;l<2;l++){//iniciodolaçoforinternofor(intc=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];}//fimdolaçoforinternox+=“\n”;}//fimdolaçoforJOptionPane.showMessageDialog(null,x,“InformaçõesDigitadaspeloUsuario”,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;
Solucao aceita
wldomiciano
É 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.
Então sempre que quiser mais cadastros, mude o valor de x ou y e tudo deve continuar funcionando independente da quantidade.
jairodione1 like
Olá widomiciano!
Fiz um pouco diferente, mas baseado na orientação. Abaixo está o descrito o código :
//iniciodometodoconstrutorpublicstaticvoidmain(Stringargs[]){Stringnome[][]=newString[3][3];Stringn=“”,s=“”,i=“”,x=“”;//iniciodolaçoforfor(intl=0;l<3;l++){//iniciodolaçoforinternofor(intc=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];}//fimdolaçoforinternox+=“\n”;}//fimdolaçoforJOptionPane.showMessageDialog(null,x,“InformaçõesDigitadaspeloUsuario”,JOptionPane.INFORMATION_MESSAGE);}//fimdometodo
OBS.: AGORA IREI TRABALHAR NA ORDENAÇÃO POR NOME REALIZADOS NESTE CADASTRO