Me ajudem nesse tópico!

3 respostas
N

v

3 Respostas

cassio

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 :slight_smile:

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!
Roger75

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]); }

>

N

Roger,

Valeu pela explicação e identificação do meu erro. Agora sei usar e entender o comando split.

:slight_smile: :slight_smile: :slight_smile: Obrigada!

Criado 24 de outubro de 2006
Ultima resposta 24 de out. de 2006
Respostas 3
Participantes 3