2012-09-11 100 views
-1

我無法識別我的代碼中的錯誤,有人可以告訴我什麼是錯誤的,嘗試了一切,但無法找到這可能是 線程中的異常「主」 java.lang.ArrayIndexOutOfBoundsException:4線程「主」異常java.lang.ArrayIndexOutOfBoundsException 4

我是巴西人,我的變量會得到一點點複雜,你能理解,因爲我也不會編輯了大量的工作來改變所有的代碼

package Aulas_POO; 

import javax.swing.JOptionPane; 


public class edicoes { 

    static byte espaço=10; 
    static String pesquisa; 
    static String informacoes[][] = new String [10][4]; 
    static String escolhaMenu; 


    public static void main(String[] args) { 




     String opcao=""; 


     do{ 
      opcao= ExibirMenu(); 

      if(opcao.equals("1")){ Cadastro(); } 

      if(opcao.equals("2")){ pesquisa(); } 

      if(opcao.equals("3")){ edicao(); } 

      if(opcao.equals("4")){visualizar(); } 

      if(opcao.equals("5")){deletarTudo();} 

      if(opcao.equals("6")){deletarUm(); } 

            }while(!opcao.equals("7")); 


    } 


    private static String ExibirMenu() { 
     // TODO Auto-generated method stub 

String menu ="DIGITE UMA DAS OPÇÕES\n\n\n" 
      +"1) Cadastro\n" 
      +"2) Pesquisa de nomes\n" 
      +"3) Edição de nomes\n" 
      +"4) Visualizar a lista\n" 
      +"5) Deletar todos cadastros\n" 
      +"6) Deletar Apenas um cadastro\n" 
      +"7) SAIR"; 

     return JOptionPane.showInputDialog(menu); 



    } 


    private static void deletarUm() { 
     // TODO Auto-generated method stub 

     pesquisa=JOptionPane.showInputDialog("Informe o Cpf"); 

     for (int i = 0; i < informacoes.length; i++) { 


      if (pesquisa.equals(informacoes[i][1])){ 

       informacoes[i][0]=null; 
       informacoes[i][1]=null; 
       informacoes[i][2]=null; 
       informacoes[i][3]=null; 
     } 


     } 


     JOptionPane.showMessageDialog(null,"Cadastro Deletado com SUCESSO!"); 

     } 



    private static void deletarTudo() { 
     // TODO Auto-generated method stub 



     for (int i = 0; i < informacoes.length; i++) { 

     informacoes[i][0]=null; 
     informacoes[i][1]=null; 
     informacoes[i][2]=null; 
     informacoes[i][3]=null; 
     } 


    } 

    private static void visualizar() { 
     // TODO Auto-generated method stub 

     String exibeInformacoes=""; 



     for (int i = 0; i < informacoes.length; i++) { 


      if(!(informacoes[i][i]==null)){ 

      exibeInformacoes+="\nNome: "+informacoes[i][0]+", CPF: "+informacoes[i][1]+", CEP: "+informacoes[i][2]+" e Telefone: "+informacoes[i][3]; 


      } 

           } 
    JOptionPane.showMessageDialog(null,exibeInformacoes); 

    } 


    private static void edicao() { 
     // TODO Auto-generated method stub 

     pesquisa=JOptionPane.showInputDialog("Informe o CPF"); 

     escolhaMenu="Digite \n\n"+ 
       "1-Editar nome\n"+ 
       "2-Editar cep\n"+ 
       "3-Editar telefone\n"+ 
       "4-Editar todos\n"+ 
       "5-Sair"; 


     for (int i = 0; i < informacoes.length; i++) { 




      if(escolhaMenu.equals("1")){ 
       informacoes[i][0]=JOptionPane.showInputDialog("Informe o novo Nome");} 

      if(escolhaMenu.equals("2")){ 
       informacoes[i][2]=JOptionPane.showInputDialog("Informe o novo cep");} 

      if(escolhaMenu.equals("3")){ 
       informacoes[i][3]=JOptionPane.showInputDialog("Informe o novo telefone");} 

      if(escolhaMenu.equals("4")){ 
       informacoes[i][0]=JOptionPane.showInputDialog("Informe o novo Nome"); 
       informacoes[i][1]=JOptionPane.showInputDialog("Informe o novo cpf"); 
       informacoes[i][2]=JOptionPane.showInputDialog("Informe o novo cep"); 
       informacoes[i][3]=JOptionPane.showInputDialog("Informe o novo telefone");} 

      if(escolhaMenu.equals("5")){return;} 

     } 


    } 


    private static void pesquisa() { 
     // TODO Auto-generated method stub 

     pesquisa=JOptionPane.showInputDialog("Informe o CPF"); 

     escolhaMenu="Digite \n\n"+ 
        "1-Pesquisar nome\n"+ 
        "2-Pesquisar cep\n"+ 
        "3-Pesquisar telefone\n"+ 
        "4-Pesquisar todos\n"+ 
        "5-Sair"; 

     for (int i = 0; i < informacoes.length; i++) { 


     if(pesquisa.equals(informacoes[i])){ 


      if(escolhaMenu.equals("1")){ 

      JOptionPane.showMessageDialog(null,informacoes[i][0]);} 
     } 

     if(escolhaMenu.equals("2")){ 

      JOptionPane.showMessageDialog(null,informacoes[i][2]);} 




     if(escolhaMenu.equals("3")){ 

     JOptionPane.showMessageDialog(null,informacoes[i][3]);} 



     if(escolhaMenu.equals("4")){ 

     JOptionPane.showMessageDialog(null,"\n"+informacoes[i][i]);} 

     } 

     if(escolhaMenu.equals("5")){ 
      return; 
     } 

} 

    private static void Cadastro() { 
     // TODO Auto-generated method stub 

if(espaço!=0){ 




     informacoes[0][0]=JOptionPane.showInputDialog("Informe o nome"); 
     informacoes[0][1]=JOptionPane.showInputDialog("Informe o cpf"); 
     informacoes[0][2]=JOptionPane.showInputDialog("Informe o cep"); 
     informacoes[0][3]=JOptionPane.showInputDialog("Informe o telefone"); 


     JOptionPane.showMessageDialog(null,"Cadastro efetuado com SUCESSO!"); 


     espaço--; 
} 

else{ 
    JOptionPane.showMessageDialog(null,"Não há mais espaço disponível , remova algum cadastro para novo cadastro"); 
} 

    } 
} 
+1

請發佈完整的堆棧跟蹤。你的問題可能是你沒有正確初始化多維數組。 – Antimony

+0

@Antimony:初始化看起來對我有效:'static String informacoes [] [] = new String [10] [4];'這不是很好*,將類型信息分開,但它應該工作。看到我的答案,我懷疑問題在哪裏。 –

+0

-1不發佈回溯。 –

回答

2

爲了將來的參考,減少你的代碼只是一個sh但是完整的例子說明了這個問題,如果你報告了一個異常,請包括堆棧跟蹤和相關的行號。

懷疑,這就是問題所在:

for (int i = 0; i < informacoes.length; i++) { 
    if(!(informacoes[i][i]==null)){ 

那將導致一個問題,當i爲4

這也許不是當然的唯一問題 - 你的代碼可能沒有達到那麼遠。閱讀240多行代碼時沒有任何關於你想要實現的內容的解釋是相對困難的,並且對錯誤的描述不足。

+0

謝謝喬恩,錯誤是一樣的,但不只是那條線,我有編輯放在[i] [i]上的所有條件...我認爲離開位置矩陣percoreria 0-3,雖然她經過1-4導致錯誤。 – user1660583

+0

@ user1660583:我根本沒有聽從第二句話 - 「percoreria」是什麼意思?但問題是'i'會上升到10,因爲那是'informacoes'的長度。 –

相關問題