GARANTIR DESCONTO

Fórum Separar nomes de arquivo que possui número de conteúdo diferentes #589454

02/12/2017

0

Eai galera, estou com um problema em um exercício que tenho q ler um arquivo de texto e nesse arquivo de texto segue o conteúdo:
Nome Dt.Nasc CPF Dependentes
lUCAS gABRIEL ;26071999;54897635815;
aFSDGSDHDFJ sDGSGSGD ;15031950;61655468920;lakghlas lsfihasf ;yhfdhfghlas lsfihasf ;
aGAHDFSHKY dFFGSDGDR ;15082010;12547896528;lakghlas sagdfjf ;
xCBXHF sDGSDHDS ;02022015;35316824865;lakghlas ityyyj ;lqrghlas lsfihasf ;lqrghlas lsfihasf ;

Já consegui separar e editar até CPF pq é a única parte do arquivo que eu tenho ctz q vai existir, mas uma pessoa pode ter de 0 À infinitos dependentes
e quando começo a separar como a primeira linha não possui dependentes quando passa a ler a segunda dá erro
deem uma força aí, irei disponibilizar o codigo
public static void main(String[] args) throws IOException {
		try {
			ArrayList <Dependentes> dependentes=new ArrayList<Dependentes>();
			ArrayList <Pessoa> pessoa=new ArrayList<Pessoa>();
			
			FileReader arquivo=new FileReader("Pessoas.txt");
			BufferedReader lerArquivo=new BufferedReader(arquivo);
			String linha=lerArquivo.readLine();
			while(linha!=null) {
				
				/*String s[]=linha.split(";");
				String nomeInteiro=s[0];
				String nome[]=nomeInteiro.split(" ");
				String nome1=nome[0].substring(0, 1).toUpperCase().concat(nome[0].substring(1).toLowerCase());
				String sobrenome=nome[1].substring(0, 1).toUpperCase().concat(nome[1].substring(1).toLowerCase());
				nomeInteiro=nome1+" "+sobrenome;
				String data=s[1];
				String dia=data.substring(0,2);
				String mes=data.substring(2,4);
				String ano=data.substring(4,8);
				data=dia+"/"+mes+"/"+ano;
				String cpf=s[2];*/
				
				String nomeInteiro=linha.substring(0, 36);
				String nome[]=nomeInteiro.split(" ");
				String nome1=nome[0].substring(0, 1).toUpperCase().concat(nome[0].substring(1).toLowerCase());
				String sobrenome=nome[1].substring(0, 1).toUpperCase().concat(nome[1].substring(1).toLowerCase());
				nomeInteiro=nome1+" "+sobrenome;
				String dia=linha.substring(37,39);
				String mes=linha.substring(39,41);
				String ano=linha.substring(41,45);
				String data=dia+"/"+mes+"/"+ano;
				String cpf=linha.substring(46, 57);
				String cpfValido=Cpf.ValidaCPF(cpf);
				
				/*if(s.length>3) {
					for(int i=3;i<s.length;i++) {
						String nomesDp=s[i];
						
					}
				}*/
				String linha2=linha.substring(57);
				System.out.println(linha2);
				String linha3="";
				int inicio=0;
				int termino=37;
				int i=0;
				try {
				while(i<10) {
					String nomesDependentes=linha2.substring(inicio,termino);
					linha3+=nomesDependentes;			
								
					inicio+=37;
					termino+=37;
					i++;
				}
                }catch(Exception  erro) {
					
				}
				String nomesDp[]=linha3.split(";");
				int c=0;
				while(c<10){

				String nomeIntDp[]=nomesDp[c].split(" ");
				String primeiroNomeDp=nomeIntDp[0].substring(0, 1).toUpperCase().concat(nomeIntDp[0].substring(1).toLowerCase());
				String sobrenomeDp=nomeIntDp[1].substring(0, 1).toUpperCase().concat(nomeIntDp[1].substring(1).toLowerCase());
				String nomeDp=primeiroNomeDp+" "+sobrenomeDp;
				System.out.println(nomeDp);
				c++;					
				}
				
				System.out.println(linha3);
				Pessoa p = new Pessoa(nomeInteiro,data,cpf,cpfValido);
				pessoa.add(p);
				

				//linha2=linha2.replace(";","-");
				//linha2=linha2.replace("- ","");
				
				linha=lerArquivo.readLine();

			}
			arquivo.close();
			for(Pessoa p1:pessoa) {
				
				System.out.println(p1.getNome()+" - "+p1.getDataNascimento()+" - "+Cpf.imprimeCPF(p1.getCpf())+" - "+p1.getCpfValido()+" - "
						);
			}

		}catch(Exception erro) {
			System.out.println("ERRO!!");
		}

	}




Não liguem para os codigos em comentário, não os apaguei pq talvez eu acabe usando, eu preciso separar nome dos dependentes pra adicionar em um ArrayList e exibir, lembrando que possuo a classe Dependentes e Pessoas, e dentro de Pessoas possuo um ArrayList de Dependentes, mas se for necessário posso tirar o ArrayList para dependentes, a minha maior preocupação é conseguir extrair cada nome de dependente de cada linha
Lucas Rodrigues

Lucas Rodrigues

Responder

Posts

02/12/2017

Lucas Rodrigues

A formatação foi errada no arquivo de texto, o editor do Devmedia retira todos os espaçamentos
mas cada nome tem um espaço de 36 caracteres tanto para pessoas quanto para dependentes
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar