v
Me ajudem nesse tópico!
3 Respostas
Olá!
Vi que vc estava com alguns problemas de lógica para ler do arquivo… Implementei alguma coisa aqui, mas só a classe Pessoa e uma classe que lê o arquivo e alimenta um ArrayList. Não usei array normal para não ficar travado em um número fixo de pessoas que ele pode guardar… A principio não se sabe o numero de linhas do arquivo, e se soubermos, o programa só serve para este arquivo.
A classe que lê o arquivo tem um método main dentro.
Agora, a parte para comparar as idades fica com vc 
Abraço!
import java.util.ArrayList;
public class Pessoa {
private String nome;
private int idade;
private boolean sexo;
private String pai;
private String mae;
private String conjuge; //melhor do que um homem ter esposO, né? :)
//representei com String porque nao há mais informações alem do nome de cada filho
private String[] filhos;
public Pessoa(String nome, int idade, boolean sexo){
this.nome = nome;
this.idade = idade;
this.sexo = sexo;
}
public String getNome(){
return nome;
}
public int getIdade(){
return idade;
}
public boolean getSexo(){
return sexo;
}
public String getPai(){
return pai;
}
public String getMae(){
return mae;
}
public String getConjuge(){
return conjuge;
}
public String[] getFilhos(){
return filhos;
}
public void setNome(String nome){
this.nome = nome;
}
public void setIdade(int idade){
this.idade = idade;
}
public void setSexo(boolean sexo){
this.sexo = sexo;
}
public void setPai(String pai){
this.pai = pai;
}
public void setMae(String mae){
this.mae = mae;
}
public void setConjuge(String conjuge){
this.conjuge = conjuge;
}
public void setFilhos(String[] filhos){
this.filhos = filhos;
}
}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class TesteGuj {
private BufferedReader bReader = null;
private ArrayList pessoas;
private String linha;
private String nomeDoRei;
private String[] partesDaLinha;
public TesteGuj(){
try{
FileReader fileReader = new FileReader(new File("Familia.txt"));
bReader = new BufferedReader(fileReader);
}
catch(IOException ioe){
System.err.println("Nao foi possivel abrir o arquivo!");
System.exit(1);
}
pessoas = new ArrayList();
}
private void leArquivo(){
String nome;
int idade;
boolean sexo;
String filhos[];
int qtdeFilhos;
Pessoa temp;
try{
if(bReader.ready())
nomeDoRei = bReader.readLine().trim();
while(bReader.ready()){
linha = bReader.readLine();
partesDaLinha = linha.split(";");
//gravando nome
nome = partesDaLinha[0];
//gravando idade
idade = Integer.parseInt(partesDaLinha[1]);
//gravando sexo
if(partesDaLinha[2].equals("M")) sexo = true;
else sexo = false;
//criando uma nova Pessoa
temp = new Pessoa(nome, idade, sexo);
//gravando nome do pai
if(partesDaLinha[3].equals("_"))
temp.setPai(null);
else temp.setPai(partesDaLinha[3]);
//gravando nome da mãe
if(partesDaLinha[4].equals("_"))
temp.setMae(null);
else temp.setMae(partesDaLinha[3]);
//gravando nome do conjuge
if(partesDaLinha[5].equals("_"))
temp.setConjuge(null);
else temp.setPai(partesDaLinha[5]);
//gravando numero de filhos
qtdeFilhos = Integer.parseInt(partesDaLinha[6].trim());
filhos = new String[qtdeFilhos];
//gravando nomes dos filhos
for(int i = 0; i < qtdeFilhos; i++){
filhos[i] = partesDaLinha[7 + i];
}
temp.setFilhos(filhos);
//adicionando a pessoa recem criada ao ArrayList
pessoas.add(temp);
}
}
catch(IOException ioe){
System.err.println("Erro ao ler arquivo...");
System.exit(1);
}
}
public static void main(String args[]){
TesteGuj teste = new TesteGuj();
teste.leArquivo();
}
}
Abraço!
Se você colocar o erro exato que aparece fica mais fácil de te ajudar. Mas vendo por cima parte do seu código já dá pra perceber algo que não vai dar certo:
for (int i = 0; i<Conteudo.lenght; i++) {
Conteudo = linha.split(Delimitador);
VetPessoas[i].Nome = Conteudo;
VetPessoas[i].Idade = Conteudo;
A variável Conteudo é onde você vai jogar a sua linha, que vai ser transformada num array, não é? Então a linha
Conteudo = linha.split(Delimitador);
tem que ser antes do for, e para pegar cada palavra da linha você teria que usar Conteudo[i];
Vou colocar um exemplo de como usar o split:
String str="Nome do Usuario;30;222-3344";
String[] strvetor=str.split(";");
for(int i=0;i<strvetor.length;i++){
System.out.println(strvetor[i]);
}
>
Roger,
Valeu pela explicação e identificação do meu erro. Agora sei usar e entender o comando split.
Obrigada!