public static void main(String args[]) {
new Main();
}
você construiu um objeto da classe, mas não chamou nenhum método, nem o construtor chamou algum outro método
Rafael_Costa_Teixeir
alPires
Boa tarde !
Fiz algumas modificações na sua classe e acrescente no mesmo arquivo apenas para testar o programa a classe Dados , segue abaixo o codigo comentado:
importjava.io.BufferedReader;importjava.io.FileReader;importjava.util.ArrayList;importjavax.swing.JOptionPane;publicclassMain{publicfinalstaticStringDIRETORIO="C:/TEMP/Database.txt";ArrayList<Dados>dado=newArrayList<Dados>();publicvoidmostraDadosTxt(){try{FileReaderleitor=newFileReader(DIRETORIO);BufferedReaderleitorBuffer=newBufferedReader(leitor);Stringlinha=leitorBuffer.readLine();while(linha!=null){Dadosaluno=newDados();String[]info=linha.split(";");aluno.setNome(info[0]);aluno.setIdade(Integer.parseInt(info[1]));doublenotas[]=newdouble[3];for(intx=0;x<3;x++){notas[x]=Double.parseDouble(info[x+2]);}dado.add(aluno);linha=leitorBuffer.readLine();// !!!! Acrescentei essa linha para ele ler a proxima linha do arquivo !!!!}leitorBuffer.close();leitor.close();}catch(Exceptione){e.printStackTrace();JOptionPane.showMessageDialog(null,e);}}publicvoidmostraDadosTela(){Stringsaida="";for(intx=0;x<dado.size();x++){saida+="\nNome: "+dado.get(x).getNome()+"\nIdade: "+dado.get(x).getIdade()+"\n ";}JOptionPane.showMessageDialog(null,saida);}publicstaticvoidmain(Stringargs[]){Mainmain=newMain();main.mostraDadosTxt();// !!! Chama o metodo mostraDadosTxtmain.mostraDadosTela();// !!! Chama o metodo mostraDadosTela}}// Criei apenas para testar o seu codigo.classDados{Stringnome;intidade;publicvoidsetNome(Stringnome){this.nome=nome;}publicStringgetNome(){returnthis.nome;}publicvoidsetIdade(intidade){this.idade=idade;}publicintgetIdade(){returnthis.idade;}}
Primeiramente, muito obrigado pela resposta e pelo auxílio.
Eu gostaria de saber também se é possível fazer de maneira masi automática, de no while, já ler automaricamente a próxima linha, a exemplo de um linha.leitorBuffer.readLine()?
E também, como faço para imprimir a saída de um vetor, por exemplo:
Aqui eu consigo perfeitamente exibir a saída, mas não consigo exibir a saída do vetor Notas. Eu pensei em criar outro for para ler as 3 posições das notas e somar a saida com uma “saidaNotas” por exemplo. Teria como também eu exibir as notas juntamente a essa mesma saida?
Obrigado mais uma vez.
Att.
A
alPires
Primeiramente, muito obrigado pela resposta e pelo auxílio.
Eu gostaria de saber também se é possível fazer de maneira masi automática, de no while, já ler automaricamente a próxima linha, a exemplo de um linha.leitorBuffer.readLine()?
E também, como faço para imprimir a saída de um vetor, por exemplo:
Aqui eu consigo perfeitamente exibir a saída, mas não consigo exibir a saída do vetor Notas. Eu pensei em criar outro for para ler as 3 posições das notas e somar a saida com uma “saidaNotas” por exemplo. Teria como também eu exibir as notas juntamente a essa mesma saida?
Obrigado mais uma vez.
Att.
A
alPires
Primeiramente, muito obrigado pela resposta e pelo auxílio.
Eu gostaria de saber também se é possível fazer de maneira masi automática, de no while, já ler automaricamente a próxima linha, a exemplo de um linha.leitorBuffer.readLine()?
E também, como faço para imprimir a saída de um vetor, por exemplo:
Aqui eu consigo perfeitamente exibir a saída, mas não consigo exibir a saída do vetor Notas. Eu pensei em criar outro for para ler as 3 posições das notas e somar a saida com uma “saidaNotas” por exemplo. Teria como também eu exibir as notas juntamente a essa mesma saida?
Obrigado mais uma vez.
Att.
Rafael_Costa_Teixeir
alPires ,
Efetuei mais algumas modificações , acredito que agora ficou melhor:
importjava.io.BufferedReader;importjava.io.FileReader;importjava.util.ArrayList;importjavax.swing.JOptionPane;publicclassMain{publicfinalstaticStringDIRETORIO="C:/TEMP/Database.txt";ArrayList<Dados>dado=newArrayList<Dados>();publicvoidmostraDadosTxt(){try{FileReaderleitor=newFileReader(DIRETORIO);BufferedReaderleitorBuffer=newBufferedReader(leitor);Stringlinha="";doublesomaNotas=0;while((linha=leitorBuffer.readLine())!=null){// !!!! Acrescentei essa linha no WHILE para ele ler a proxima linha do arquivo !!!!Dadosaluno=newDados();String[]info=linha.split(";");aluno.setNome(info[0]);aluno.setIdade(Integer.parseInt(info[1]));doublenotas[]=newdouble[3];for(intx=0;x<3;x++){notas[x]=Double.parseDouble(info[x+2]);aluno.addNota(notas[x]);//adiciona uma notasomaNotas=somaNotas+notas[x];// Soma as notasaluno.setNotaTotal(somaNotas);// Armazena a nota total no objeto aluno}somaNotas=0;// zera a soma das notasdado.add(aluno);}leitorBuffer.close();leitor.close();}catch(Exceptione){e.printStackTrace();JOptionPane.showMessageDialog(null,e);}}publicvoidmostraDadosTela(){Stringsaida="";for(intx=0;x<dado.size();x++){saida+="\nNome: "+dado.get(x).getNome()+"\nIdade: "+dado.get(x).getIdade()+"\n 1ª Nota:"+dado.get(x).getNota(0)+"\n 2ª Nota:"+dado.get(x).getNota(1)+"\n 3ª Nota:"+dado.get(x).getNota(2)+"\nNota Total:"+dado.get(x).getNotaTotal()+"\n";}JOptionPane.showMessageDialog(null,saida);}publicstaticvoidmain(Stringargs[]){Mainmain=newMain();main.mostraDadosTxt();// !!! Chama o metodo mostraDadosTxtmain.mostraDadosTela();// !!! Chama o metodo mostraDadosTela}}// Criei apenas para testar o seu codigo.classDados{Stringnome;intidade;doublenotaTotal;ArrayList<Double>arrayNotas;publicDados(){arrayNotas=newArrayList<Double>();}publicvoidsetNome(Stringnome){this.nome=nome;}publicStringgetNome(){returnthis.nome;}publicvoidsetIdade(intidade){this.idade=idade;}publicintgetIdade(){returnthis.idade;}publicvoidaddNota(doublenota){arrayNotas.add(nota);}publicdoublegetNota(intposicao){returnarrayNotas.get(posicao);}publicvoidsetNotaTotal(doublenota){this.notaTotal=nota;}publicdoublegetNotaTotal(){returnthis.notaTotal;}}
Qualquer duvida posta ai.
lucasportela
Segue um exemplo de ler os arquivos de um diretório