Help! não consigo Ler meu arquivo txt completo

Olá galerinha :slight_smile: sou nova por aqui e preciso de ajuda. Meu código não está lendo meu arquivo completo, ele lê 3 campos e depois não lê mais, só que eu possuo 6 campos no arquivo; fora que fica dando um erro de caminho desconhecido na leitura de um dos campos, em que eu recebo como string do arquivo txt e converto para inteiro antes de armazenar. Estou trabalhando com um ArrayList antes de sobrescrever os dados no arquivo txt novamente. Assim: o código lê o arquivo por campos separados por || e armazena nas respectivas variáveis encapsuladas e acessadas por parte de um Array elas são manipuladas e por fim sobrescreve o arquivo ao terminar.
código main abaixo :

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;

public class MainBanco {

	public static void main(String[] args) {
		/*Variaveis cliente*/
		int cod=0;
		String nome=null;
		String cpf=null;
		String end=null;
		String tel=null;
		String situ=null;
		int test=0;
		int tes=0;

		/*Variaveis conta*/
		String agencia=null;
		String conta=null;
		float saldo=0;
		String situ1=null;
		int cod_cliente=0;
		float n = 0;
		int num=0;
		float sa=0;
		float sa1=0;

		@SuppressWarnings("resource")
		Scanner ent = new Scanner(System.in);

		ArrayList<Cliente> cli = lerCliente("C:\\Users\\ADMIN\\Desktop\\tab\\Banco\\src\\Cliente.txt");
		ArrayList<Conta> cont = lerConta("C:\\Users\\ADMIN\\Desktop\\tab\\Banco\\src\\Conta.txt");


		/*for(int i = 0; i < cli.size(); i++){
			System.out.println(cli.get(i));
		}

		for(int i = 0; i < cont.size(); i++){
			System.out.println(cont.get(i));
		}        

		prods3.add(new Cliente(7, "Gggg","000.000.000-00","rua A n777",84757595,"A"));

		salvarProdutos(prods3, "C:\\Users\\ADMIN\\Desktop\\tab\\PProduto\\src\\Cliente.txt");
		 */	

		/*INICIO*/
		System.out.println("BEN-VINDO O QUE DESEJA REALIZAR?");
		System.out.println("Digite 1 para acessar sua conta");
		System.out.println("Digite 2 para ver seus dados");
		System.out.println("Digite 3 para cadastrar cliente");
		System.out.println("Digite 4 para cadastrar conta");
		test=ent.nextInt();

		/*AÇÕES*/
		if(test==1){
			System.out.println("Digite seu codigo de cliente");
			tes=ent.nextInt();
			for(Conta c: cont){
				if(tes==c.getCod_cliente()){
					/*Opções */
					System.out.println("BEM-VINDO A SUA CONTA!!");
					System.out.println("Opções de Conta: ");	
					System.out.println("digite 1 para ver o saldo");
					System.out.println("digite 2 para saque");
					System.out.println("digite 3 para transferência");
					num=ent.nextInt();

					/*Funções*/
					if(num==1){
						for(Conta c1: cont){
							if(tes==c1.getCod_cliente()){
								System.out.println(c1.getSaldo());
							}
						}
					}

					if(num==2){
						for(Conta c1: cont){
							if(tes==c1.getCod_cliente()){
								System.out.println(c1.getSaldo());
								sa=(float) c1.getSaldo();
							}
							while(n!=1){
								System.out.println("quanto deseja sacar?");
								n=ent.nextInt();
								if(sa>=n){
									sa=sa-n;
									c1.setSaldo(sa);

									System.out.println("Saque realizado com sucesso!!");
									System.out.println("Novo saldo: "+ c1.getSaldo());
									n=1;
								}else{
									System.out.println("Saldo insuficeiente!!");
									System.out.println("Digite outro valor para saque ou digite 1 para sair");
									n=ent.nextInt();
								}
							}
						}
					}

					if(num==3){
						for(Conta c1: cont){
							if(tes==c1.getCod_cliente()){
								System.out.println(c1.getSaldo());
								sa=(float) c1.getSaldo();
							}
						}

						System.out.println("Digite o codigo do cliente para o qua deseja transferir");
						test=ent.nextInt();

						for(Cliente c1 : cli){
							if(test==c1.getCodigo()){
								System.out.println("Quanto deseja tranferir para: "+ c1.getNome());
								n=ent.nextInt();

								while(n!=1){
									for(Conta c2: cont){
										if(sa>=n){
											for(int i = 0;i<=cli.size();i++){
												if(c1.getCodigo()==test){
													sa1=c2.getSaldo();
													sa1=sa1+n;
													c2.setSaldo(sa1);

													if(c1.getCodigo()==tes){
														sa=sa-n;
														c2.setSaldo(sa);

														System.out.println("Transferencia realizado com sucesso!!");
														System.out.println("Novo saldo: "+ c2.getSaldo());
														n=1;
													}

												}else{
													System.out.println("Saldo insuficeiente!!");
													System.out.println("Digite outro valor para transferencia ou digite 1 para sair");
													n=ent.nextInt();
												}
											}
										}
									}
								}


							}
						}
					}
				}
			}
		}

		if(test==2){
			System.out.println("Digite seu codigo de cliente");
			tes=ent.nextInt();
			for(Cliente c1: cli){
				if(tes==c1.getCodigo()){
					System.out.println(cli.get(tes-1));
				}
			}

		}

		if(test==3){
			/*Cadastro de cliente*/
			System.out.println("Cadastro de cliente:");
			for(Cliente c1: cli){
				System.out.println("Digite o codigo: ");
				cod=ent.nextInt(); 
				c1.setCodigo(cod);
				System.out.println("Digite o nome: ");
				nome=ent.next(); 
				c1.setNome(nome);
				System.out.println("Digite o cpf: ");
				cpf=ent.next(); 
				c1.setCpf(cpf);
				System.out.println("Digite o End: ");
				end=ent.next();
				c1.setEnd(end);
				System.out.println("Digite o Tel: ");
				tel=ent.next();
				c1.setTel(tel);
				System.out.println("Digite o situação  A- para ativo e i- para inativo: ");
				situ=ent.next();
				c1.setSitu(situ);
			}
		}

		if(test==4){
			/*Cadastro de conta*/
			System.out.println("Cadastro de conta:");
			System.out.println("Digite o codigo do Cliente: ");
			cod_cliente=ent.nextInt(); 
			for(int i = 0; i < cli.size(); i++){
				for(Cliente c1: cli){
					if(cod_cliente==c1.getCodigo()&& c1.getSitu()=="A"){
						for(Conta co: cont){
							co.setCod_cliente(cod_cliente);
							System.out.println("Digite a agencia: ");
							agencia=ent.next();
							co.setAgencia(agencia);
							System.out.println("Digite a conta: ");
							conta=ent.next();
							co.setConta(conta);
							System.out.println("Digite o saldo: ");
							saldo=ent.nextFloat();
							co.setSaldo(saldo);
							System.out.println("Digite a situação A- para ativo e i- para inativo: ");
							situ1=ent.next();
							co.setSitu(situ1);
						}
						System.out.println("Conta cadastrada com sucesso!!");
						n=1;
					}else{
						System.out.println("Codigo inexistente ou inativo para: "+ cli.get(i));
					}
				}
			}
		}
		
		

		for(int i = 0; i < cli.size(); i++){
			salvarClientes(cli, "C:\\Users\\ADMIN\\Desktop\\tab\\Banco\\src\\Cliente.txt");
		}

		for(int i = 0; i < cont.size(); i++){
			salvarContas(cont, "C:\\Users\\ADMIN\\Desktop\\tab\\Banco\\src\\Conta.txt");
		}


	}


	/* leitura do arquivo*/
	public static ArrayList<Cliente> lerCliente(String nomeArquivo) {

		ArrayList<Cliente> prods = new ArrayList<Cliente>();

		Scanner sc;
		try {

			FileReader fr = new FileReader(nomeArquivo);
			sc = new Scanner(fr);
			sc.useDelimiter("\\||\\n");

			while (sc.hasNext()) 
			{	
				
				String cod=sc.next();
				int codigo=Integer.parseInt(cod);
			    System.out.println(cod);
			    
				String nome = sc.next();
				System.out.println(nome);

				String cpf = sc.next();
				System.out.println(cpf);

				String end = sc.next();
				System.out.println(end);
				
				String tel = sc.next();
			    System.out.println(tel);
			
				String situ = sc.next();
				System.out.println(situ);

				Cliente c = new Cliente(codigo, nome, cpf, end, tel, situ);

				prods.add(c);

				//sc.nextLine();
			}

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

		return prods;
	}



	public static ArrayList<Conta> lerConta(String nomeArquivo) {

		ArrayList<Conta> prods1 = new ArrayList<Conta>();

		Scanner sc;
		try {

			FileReader fr = new FileReader(nomeArquivo);
			sc = new Scanner(fr);
			sc.useDelimiter("\\||\\n");

			if(sc.hasNext()){
				while (sc.hasNext()) 
				{	
					String agencia = sc.next();
					System.out.println(agencia);

					String conta = sc.next();
					System.out.println(conta);

					String saldo = sc.next();
					float saldo1 = Float.parseFloat(saldo);
					System.out.println(saldo1);

					String situ = sc.next();
					System.out.println(situ);

					String cod_cliente1 = sc.next();
					int cod_cliente=Integer.parseInt(cod_cliente1);
				    System.out.println(cod_cliente);

					Conta con = new Conta(agencia,conta, saldo1, situ, cod_cliente);

					prods1.add(con);

					//sc.nextLine();
				}
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

		return prods1;
	}

	/* escrita do arquivo*/
	public static void salvarClientes(ArrayList<Cliente> prods, String nomeArquivo) {

		PrintWriter pw;
		try {
			pw = new PrintWriter(nomeArquivo);

			for(int i = 0; i < prods.size(); i++)
			{
				Cliente p = prods.get(i);
				String sp = p.getCodigo() + "||" + p.getNome() + "||" + p.getCpf() + "||" + p.getEnd() + "||" + p.getTel() + "||" + p.getSitu();
				pw.println(sp);
			}

			pw.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

	}

	public static void salvarContas(ArrayList<Conta> prods, String nomeArquivo) {

		PrintWriter pw;
		try {
			pw = new PrintWriter(nomeArquivo);

			for(int i = 0; i < prods.size(); i++)
			{
				Conta p = prods.get(i);
				String sp = p.getAgencia() + "||" + p.getConta() + "||" + p.getSaldo() + "||" + p.getSitu() + "||" + p.getCod_cliente();
				pw.println(sp);
			}

			pw.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

	}

}

ERRO:

Exception in thread “main” java.lang.NumberFormatException: For input string: "rua A n 66"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at MainBanco.lerCliente(MainBanco.java:257)
at MainBanco.main(MainBanco.java:34)

Arquivo TXT Cliente:

1||Maria||222.666.555-55||rua A n 66||989076678||A
2||Moura||333.666.555-55||rua C n 77||989076578||A
3||Mario||578.666.555-55||rua B n 22||989074478||A
4||Julio||212.666.555-55||rua W n 77||989076228||A

Arquivo TXT Conta:
66-7||889||1000.0||A||1
76-7||855||100.0||A||2
55-7||223||600.0||A||3
99-7||999||500.0||A||4

eu acho que tem algo de errado no seu delimitador

pq vc tenta converter o endereço pra numero. tente usar um | so pois eu acho q ele esta considerando || como um só

Antes eu estava usando “;” no entanto continuava com esse comportamento; Foi então que mudei para ||, mas vou tentar sua dica . :wink:

é realmente não funcionou :confused:

Galerinha resolvido… Realmente era só o delimitador, ele pulava linhas, porem eu já possuía a chamada de uma função para isso sc.nextLine(); então troquei o delimitador por “;” outro problema também era que eu não encerrava a linha do arquivo assim foi só edita-lo e pegou. ficou assim:

sc.useDelimiter(";");

Arquivo TXT Cliente:

1;Maria;222.666.555-55;rua A n 66;989076678;A;
2;Moura;333.666.555-55;rua C n 77;989076578;A;
3;Mario;578.666.555-55;rua B n 22;989074478;A;
4;Julio;212.666.555-55;rua W n 77;989076228;A;

Arquivo TXT Conta:
66-7;889;1000.0;A;1;
76-7;855;100.0;A;2;
55-7;223;600.0;A;3;
99-7;999;500.0;A;4;