2
respostas

Preciso de ajudar a achar o erro no seguinte código

Estou fazendo a leitura de um arquivo txt e nele preciso armazenar a leitura dos dados numa classe com os atributos, está fazendo a leitura e os métodos set e get estão funcionando, o problema é que quando vou executar o código, ele tá gerando null nos dados, alguém pode me ajudar ?

public static void main(String[] args) {

        DecimalFormat conversaoNumero = new DecimalFormat("0.##");
        ArrayList<Pessoa> pessoas = new ArrayList<Pessoa>();

        // Declarando atributos
        Double mensalidade;
        String mensalidadeString;
        int verificarLinhaZero = 0;

        try {
            // FilerReader: estou instanciando um objeto desta classe, para acessar o caminho do arquivo txt
            FileReader arquivo = new FileReader("C:/Users/rodrigo/Desktop/aluno.txt");

            // BufferedReader: estou instanciando um objeto desta classe, para ler o arquivo em txt
            BufferedReader lerArquivo = new BufferedReader(arquivo);

            // Ready verificando se existe texto dentro do arquivo
            while (lerArquivo.ready()) {
                // ReadLine vai ler somente a linha
                String texto = lerArquivo.readLine();
                String textoSplit[] = texto.split(";");

                for (int posicaoVetor = 0; posicaoVetor < 4; posicaoVetor++) {
                    Pessoa p = new Pessoa();
                    if (posicaoVetor == 0) {
                        p.setMatricula(textoSplit[posicaoVetor]);
                    }
                    else if (posicaoVetor == 1) {
                        p.setNome(textoSplit[posicaoVetor]);
                    }
                    else if (posicaoVetor == 2) {
                        p.setCfp(textoSplit[posicaoVetor]);
                    }
                    else if (posicaoVetor == 3) {
                        mensalidade = 500 + (1235.80 - 500) * Math.random();
                        mensalidadeString = conversaoNumero.format(mensalidade);
                        p.setMensalidade(textoSplit[posicaoVetor] + mensalidadeString);
                    }

                    pessoas.add(p);

                    // System.out.print(p.getMatricula());
                    //+ p.getNome() + p.getMatricula() + p.getMensalidade());
                    // System.out.print(p.getNome());
                    //System.out.print(p.getCfp());
                    // System.out.println(p.getMensalidade());
                }
                for (int i = 0; i < pessoas.size(); i++) {
                    Pessoa p = new Pessoa();
                    p = pessoas.get(i);

                    System.out.println(p.getMatricula());
                    //p.getNome() + p.getCfp() + p.getMensalidade());
                }

                // System.out.print(textoSplit[0]);
                //System.out.print(textoSplit[1]);
                //System.out.print(textoSplit[2]);
                //System.out.println(textoSplit[3]);
                // classeAluno.dadosAluno.add(textoSplit[posicaoTexto]);
                /*Irá verificar apenas a primeira linha da matriz, para não gerar valor da mensalidade na posição 3
                     Onde deve contém o texto mensalidade*/
                //if (verificarLinhaZero != 0) {
                //  if (posicaoTexto == 3) {
                // mensalidade = 500 + (1235.80 - 500) * Math.random();
                // mensalidadeString = conversaoNumero.format(mensalidade);
                // classeAluno.dadosAluno.add(textoSplit[posicaoTexto] = "R$ " + mensalidadeString);
                // }
                // }
                // System.out.print(textoSplit[posicaoTexto] + "  \t");
                // System.out.print(classeAluno.dadosAluno.get(posicaoTexto) + " \t");
                // verificarLinhaZero++;
                // System.out.println("");
            }
        } catch (IOException e) {
            System.out.println("Error ao ler o arquivo");
        }
    }
//// o código está saindo assim no programa
MATRICULA
null
null
null
MATRICULA
null
null
null
201800010
null
null
null
MATRICULA
null
null
null
201800010
null
null
null
201800020
null
null
null
MATRICULA
2 respostas

Oi Rodrigo, cê pode me disponibilizar o arquivo aluno.txt pra mim testar seu código e verificar o problema?

Rodrigo, sei que usar estrutura de repetição e condicionais são boas praticas, mas perceba que por querer utiliza-las seu código esta um pouco maior do que deveria.

Olha como poderia ser seu código:

String textoSplit[] = texto.split(";");
 Pessoa p = new Pessoa();
 p.setMatricula(textoSplit[0]);
p.setNome(textoSplit[1]);
p.setCfp(textoSplit[2]);
 mensalidade = 500 + (1235.80 - 500) * Math.random();
 mensalidadeString =conversaoNumero.format(mensalidade);
 p.setMensalidade(textoSplit[3] + mensalidadeString);