Comparando valores antes de escrever

2 respostas
bancojava
Y

Boa tarde pessoal.

Sou novo em java e tenho um projeto onde simulo certas operações de banco como por exemplo o cadastro de clientes dentro de um arquivo .csv, o problema é que para fazer este cadastro preciso fazer uma comparação do código do cliente com os códigos do arquivo que contém os nomes dos clientes já cadastrados ou seja o método não pode permitir que aconteça o cadastro de clientes com o código repetido é exatamente este o problema que estou tendo dentro do método.

Blockquote

private static void cadastraConta() {

System.out.println(Digite os dados da conta:);

System.out.println("Código: ");

String codigoConta = scan.nextLine();

codigoConta = scan.nextLine();

System.out.println("codigo do cliente: ");

String codigoCliente = scan.nextLine();

System.out.println("Data de criação: ");

String dataCadastro = scan.nextLine();

A leitura é feita feita dentro destas variáveis.

Blockquote

try {

FileReader leitorContaComparacao = new FileReader(conta.csv);

BufferedReader leitorContaCompara = new BufferedReader(leitorContaComparacao);

String linhaContaCompara = leitorContaCompara.readLine();

String[] vetorContaComparacao;

boolean verificarConta = false;

Ai tem a leitura do arquivo .csv que o método precisa ler criei uma variável booleana para fazer a validação dentro do loop de leitura.

Blockquote

while (linhaContaCompara != null) {

vetorContaComparacao = linhaContaCompara.split(";");

if (vetorContaComparacao[0].equals(codigoConta)) {

} else {

verificarConta = true;

}

linhaContaCompara = leitorContaCompara.readLine();

}

A leitura de todo arquivo é feita aqui e ai tem a variável que válida a leitura fazendo que o conteúdo seja escrito dentro do arquivo .csv

Blockquote

if(verificarConta == true) {

linhaContaCompara = leitorContaCompara.readLine();

FileWriter escreverConta = new FileWriter(conta.csv, true);

BufferedWriter escreveArquivoConta = new BufferedWriter(escreverConta);

escreveArquivoConta.write(codigoConta + ; + codigoCliente + ; + dataCadastro);

escreveArquivoConta.newLine();

escreveArquivoConta.close();

escreverConta.close();

System.out.println(Cadastro feito com sucesso!);

} else {

System.out.println(Codigo da conta  existe!);

}

E aqui é a escrita no arquivo.

O problema é que ele faz a leitura e se o código estiver repetido dentro do arquivo ele ainda continua fazendo a leitura e escrevendo dentro do código.

Qual o erro que cometi e o que devo fazer para corrigi-lo?

2 Respostas

D

O problema deve ser a leitura, quando encontra a conta, sai do loop while. Troquei o verificarConta por encontrouConta para ficar mais fácil de entender

boolean encontrouConta = false;
String linhaContaCompara = leitorContaCompara.readLine();
while (linhaContaCompara != null) {
 vetorContaComparacao = linhaContaCompara.split(";");
 if (vetorContaComparacao[0].equals(codigoConta)) {
  encontrouConta = true;
  break; // encontrou conta, então sai do while
 } else {
  linhaContaCompara = leitorContaCompara.readLine(); // lê o próximo
 }
}

e na comparação

if (!encontrouConta) { // se não encontrou a conta
Y

Sim! o problema era na leitura e na comparação que eu usei fui bem burro na hora kkk

Mas enfim consegui resolver o problema (-:

Muito obrigado amigo

Criado 5 de dezembro de 2017
Ultima resposta 13 de dez. de 2017
Respostas 2
Participantes 2