<Resolvido>Problema no List

7 respostas
hugosg

Galera to tendo um problema muito chato. Nas linhas 30, 39 e 48 dá NullPointerExceptions, gostaria muito q alguém pudesse me ajudar, as listas não estão nulas.

private void pesquisarSalarios(java.awt.event.ActionEvent evt) {                                   
         // limpa tabela
        int numLinha= jTable1.getRowCount();
        for (int contador = 0; contador < numLinha;) {
            jTable1.setValueAt(null, contador, 0);
            jTable1.setValueAt(null, contador, 1);
            jTable1.setValueAt(null, contador, 2);
            jTable1.setValueAt(null, contador, 3);
            contador++;
        }
        String nome = tfNome.getText();       
        SalarioAction action = new SalarioAction();
        CooperadoDAO cooperadoDAO = new CooperadoDAO();
        Cooperado cooperado = new Cooperado();
        cooperadoDAO.beginHibernate();

        //Pesquisa Combinada...
        List<Salario> lista;
        List<Salario> lista1 = null;
        List<Salario> lista2 = null;
        List<Salario> lista3 = null;
        lista = action.pesquisarTodosSalarios();
        if(lista.isEmpty()) return; //Parada caso não hajam salários na pesquisa

        if(nome.length()>0){
            for (Iterator it = lista.iterator(); it.hasNext();){
                Salario salario = (Salario)it.next();                
                cooperado = cooperadoDAO.buscaCooperadoId(salario.getIdCooperado());
                if(cooperado.getNmCooperado().contains(nome)){
                    lista1.add(salario);
                }
            }
        }else lista1 = lista;

        if(boxMes.getSelectedIndex()>0){
            for (Iterator it = lista1.iterator(); it.hasNext();){
                Salario salario = (Salario)it.next();
                if(salario.getMesCorrespondente().equals((String)boxMes.getSelectedItem())){
                    lista2.add(salario);
                }
            }
        }else lista2 = lista1;

        if(boxStatus.getSelectedIndex()>0){
            for (Iterator it = lista2.iterator(); it.hasNext();){
                Salario salario = (Salario)it.next();
                if(salario.getStatus().equals((String)boxStatus.getSelectedItem())){
                    lista3.add(salario);
                }
            }
        }else lista3 = lista2;
        //Fim da Pesquisa Combinada

        //Preenchendo a Tabela
        Salario salario = new Salario();
        int linha = 0;
        for (Iterator it = lista3.iterator(); it.hasNext();){
            if (jTable1.getRowCount() > linha){
                DefaultTableModel modeloTabela = (DefaultTableModel)jTable1.getModel();
                modeloTabela.setNumRows(linha+2);
            }
            salario = (Salario)it.next();
            cooperado = cooperadoDAO.buscaCooperadoId(salario.getIdCooperado());
            jTable1.setValueAt(cooperado.getNmCooperado(), linha, 0);
            jTable1.setValueAt(salario.getMesCorrespondente(), linha, 1);
            jTable1.setValueAt(salario.getValor(), linha, 2);
            jTable1.setValueAt(salario.getNumChamados(), linha, 3);
            linha++;
        }
        cooperadoDAO.commitTransaction();
        cooperadoDAO.closeSession();
    }

7 Respostas

mario.fts

bem, de acordo com o que está nas linhas 19, 20 e 21 as listas estão nulas sim. as listas só não ficam nulas se elas cairem nos respectivos else, se entrarem no if vc vai tomar npe

moacirjava

Por que nas linhas onde vc declara os lists vc não os inicializa?

List<Salario> lista1 = new ArrayList<Salario>(); List<Salario> lista2 = new ArrayList<Salario>(); List<Salario> lista3 = new ArrayList<Salario>();

ViniGodoy

Graças a Deus não sou eu quem vai manter esse código.

Você já ouviu falar em refatoração? Em dividir em métodos menores?
Em evitar ifs cheios de elses e código duplicado?

Não é à toa que você mesmo está se perdendo no seu próprio código…

moacirjava

ViniGodoy:
Graças a Deus não sou eu quem vai manter esse código.

Você já ouviu falar em refatoração? Em dividir em métodos menores?
Em evitar ifs cheios de elses e código duplicado?

Não é à toa que você mesmo está se perdendo no seu próprio código…

E ele está fazendo o processamento todo está sendo feito dentro do botão… :?

peczenyj

Fico imaginando que o hugosg é novato na area de programação, portanto todas as dicas sobre esta pequena amostra são uteis para ele.

Então: NullPointerException é o seguinte

Pessoa andre= null;

andre.cadastrarNaConta(100000000);

Puxa, muito dinheiro cadastrado na conta do andre. Porem, veja q legal, o objeto não existe! Fiz questão de deixar explicito. O que acontece ao tentar executar o método cadastrarNaConta é uma bela exception.

Agora veja isso:
http://java.sun.com/j2se/1.5.0/docs/guide/language/foreach.html

Se vc se beneficia do generics, pode se beneficiar do foreach

outra coisa, raramente lista1, lista2, lista3 são nomes praticos para variaveis se o seu codigo tem mais de 3 linhas. Chame de algo expressivo tipo ‘lista_elementos_nao_repetidos_do_tio_Ze’ que seja.

Por fim, leia sobre junit.

hugosg

É gente, sou novato sim, estou aprendendo meio que na marra, mas vou melhorar com as dicas que leio aqui, ainda não pude testar as dicas de vocês mas assim que fizer posto aqui o resultado.

hugosg

vlw gente, era só inicializar mesmo, desculpem a minha ignorancia mas se começa assim né, obrigado.

Criado 10 de outubro de 2009
Ultima resposta 11 de out. de 2009
Respostas 7
Participantes 5