-1

コードでエラーを特定できません。誰かが何が悪いのか教えてください。すべてを試してみましたが、これがスレッド「メイン」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");
}

    }
}
4

1 に答える 1

2

今後の参考のために、問題を示す短いが完全な例にコードを切り詰めてください。例外を報告する場合は、スタック トレースと関連する行番号を含めてください。

これが問題だと思います:

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

iが4のとき、それは問題を引き起こすでしょう。

もちろん、それが唯一の問題ではないかもしれません - あなたのコードはそこまで達していないかもしれません。240 行を超えるコードを、何を達成しようとしているのかについての説明や、何がうまくいかないのかについての不十分な説明なしに読むのは比較的困難です。

于 2012-09-11T02:45:33.133 に答える