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
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:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class Main {
public final static String DIRETORIO = "C:/TEMP/Database.txt";
ArrayList<Dados> dado = new ArrayList<Dados>();
public void mostraDadosTxt() {
try {
FileReader leitor = new FileReader(DIRETORIO);
BufferedReader leitorBuffer = new BufferedReader(leitor);
String linha = leitorBuffer.readLine();
while (linha != null) {
Dados aluno = new Dados();
String[] info = linha.split(";");
aluno.setNome(info[0]);
aluno.setIdade(Integer.parseInt(info[1]));
double notas[] = new double[3];
for (int x = 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 (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, e);
}
}
public void mostraDadosTela() {
String saida = "";
for (int x = 0; x < dado.size(); x++) {
saida += "\nNome: " + dado.get(x).getNome()
+ "\nIdade: " + dado.get(x).getIdade() + "\n ";
}
JOptionPane.showMessageDialog(null, saida);
}
public static void main(String args[]) {
Main main = new Main();
main.mostraDadosTxt(); // !!! Chama o metodo mostraDadosTxt
main.mostraDadosTela(); // !!! Chama o metodo mostraDadosTela
}
}
// Criei apenas para testar o seu codigo.
class Dados {
String nome;
int idade;
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return this.nome;
}
public void setIdade(int idade) {
this.idade = idade;
}
public int getIdade() {
return this.idade;
}
}
Arquivo C:/TEMP/Database.txt que usei para teste:
Rafael Costa Teixeira;29;10;7.5;10
Leonardo Costa Teixeira;19;7.5;7;5
Ralf Costa Teixeira;9;5.0;10;3
Marlene Costa;40;7.5;10;10
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:
public void mostraDadosTela() {
String saida = "";
for (int x = 0; x < dado.size(); x++) {
saida += "\nNome: " + dado.get(x).getNome()
+ "\nIdade: " + dado.get(x).getIdade() + "\n ";
}
JOptionPane.showMessageDialog(null, saida);
}
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?
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:
public void mostraDadosTela() {
String saida = "";
for (int x = 0; x < dado.size(); x++) {
saida += "\nNome: " + dado.get(x).getNome()
+ "\nIdade: " + dado.get(x).getIdade() + "\n ";
}
JOptionPane.showMessageDialog(null, saida);
}
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?
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:
public void mostraDadosTela() {
String saida = "";
for (int x = 0; x < dado.size(); x++) {
saida += "\nNome: " + dado.get(x).getNome()
+ "\nIdade: " + dado.get(x).getIdade() + "\n ";
}
JOptionPane.showMessageDialog(null, saida);
}
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?
Efetuei mais algumas modificações , acredito que agora ficou melhor:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class Main {
public final static String DIRETORIO = "C:/TEMP/Database.txt";
ArrayList<Dados> dado = new ArrayList<Dados>();
public void mostraDadosTxt() {
try {
FileReader leitor = new FileReader(DIRETORIO);
BufferedReader leitorBuffer = new BufferedReader(leitor);
String linha = "";
double somaNotas = 0;
while ( ( linha = leitorBuffer.readLine() ) != null ) { // !!!! Acrescentei essa linha no WHILE para ele ler a proxima linha do arquivo !!!!
Dados aluno = new Dados();
String[] info = linha.split(";");
aluno.setNome(info[0]);
aluno.setIdade(Integer.parseInt(info[1]));
double notas[] = new double[3];
for (int x = 0; x < 3; x++) {
notas[x] = Double.parseDouble(info[x + 2]);
aluno.addNota(notas[x]); //adiciona uma nota
somaNotas = somaNotas + notas[x]; // Soma as notas
aluno.setNotaTotal(somaNotas); // Armazena a nota total no objeto aluno
}
somaNotas = 0; // zera a soma das notas
dado.add(aluno);
}
leitorBuffer.close();
leitor.close();
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, e);
}
}
public void mostraDadosTela() {
String saida = "";
for (int x = 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);
}
public static void main(String args[]) {
Main main = new Main();
main.mostraDadosTxt(); // !!! Chama o metodo mostraDadosTxt
main.mostraDadosTela(); // !!! Chama o metodo mostraDadosTela
}
}
// Criei apenas para testar o seu codigo.
class Dados {
String nome;
int idade;
double notaTotal;
ArrayList<Double> arrayNotas;
public Dados() {
arrayNotas = new ArrayList<Double>();
}
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return this.nome;
}
public void setIdade(int idade) {
this.idade = idade;
}
public int getIdade() {
return this.idade;
}
public void addNota(double nota) {
arrayNotas.add(nota);
}
public double getNota(int posicao) {
return arrayNotas.get(posicao);
}
public void setNotaTotal(double nota) {
this.notaTotal = nota;
}
public double getNotaTotal() {
return this.notaTotal;
}
}