Estou com dificuldade em validar os campos do método “add”. Ele válida os campos mas mesmo assim ele permite o cadastro. Se alguém digitar o código “0” ou outro valor que esteja dentro da validação, ele cadastra normalmente. Acredito que seja meus ifs que não estão corretos. E o método “alterar” não está alterando os dados da locação. Ficarei grato se alguém puder ajudar!
Classe LocacaoServico
package servico;
import entidade.Locacao;
import estruturaencadeada.EstruturaSimples;
public class LocacaoServico {
public EstruturaSimples<Locacao> inicio = null;
public EstruturaSimples<Locacao> add(EstruturaSimples<Locacao> referencia, Locacao novaLocacao) {
if (novaLocacao.getCodigoLocacao() <= 0) {
System.out.println("Código inválido. Insira um código maior que 0");
}
if (novaLocacao.getCpfUsuario().length() < 11 || novaLocacao.getCpfUsuario().length() > 11) {
System.out.println("CPF inválido. Informe um CPF com 11 caracteres.");
}
if (novaLocacao.getPlaca().length() < 7 || novaLocacao.getPlaca().length() > 7) {
System.out.println("Placa inválida. Informe uma placa com 7 caracteres.");
}
if (novaLocacao.getTotalDias() < 1) {
System.out.println("É preciso de no mínimo 1 dia para alugar um veículo.");
}
if (novaLocacao.getValorDiaria() < 50) {
System.out.println("É precio um valor acima de 50 R$ para alugar um veículo.");
}
if (referencia == null) {
EstruturaSimples<Locacao> novaEstrutura = new EstruturaSimples<Locacao>();
novaEstrutura.informacao = novaLocacao;
return novaEstrutura;
} else if (referencia != null && referencia.proximo == null) {
referencia.proximo = add(referencia.proximo, novaLocacao);
return referencia;
}
else if (referencia != null && referencia.proximo != null) {
referencia.proximo.proximo = add(referencia.proximo.proximo, novaLocacao);
return referencia;
} else
return referencia;
}
public void imprimirInicio(EstruturaSimples<Locacao> referencia) {
if (referencia != null) {
System.out.println("INÍCIO:" + referencia.informacao.toString());
imprimirInicio(referencia.proximo);
}
}
public EstruturaSimples<Locacao> buscarPorCodigo(EstruturaSimples<Locacao> estrutura, long codigo) {
if (estrutura != null && estrutura.proximo != null) {
if (codigo <= 0) {
System.out.println("Insira um código maior que 0");
}
if (codigo > 0) {
System.out.println("INÍCIO:" + estrutura.informacao.getCodigoLocacao() + " PROXÍMO:"
+ estrutura.proximo.informacao.getCodigoLocacao());
if (estrutura.informacao.getCodigoLocacao() == codigo) {
return estrutura.proximo;
} else
return buscarPorCodigo(estrutura.proximo, codigo);
}
}
return null;
}
public void alterar(EstruturaSimples<Locacao> estrutura, long codigo, Locacao altLocacao) {
if (estrutura != null && estrutura.proximo != null) {
if (estrutura.informacao.getCodigoLocacao() == codigo) {
if (altLocacao != null) {
if (altLocacao.getCpfUsuario().length() == 11) {
estrutura.informacao.setCpfUsuario(altLocacao.getCpfUsuario());
} else {
System.out.println("Insira um CPF válido com 11 dígitos");
}
if (altLocacao.getPlaca().length() == 7) {
estrutura.informacao.setPlaca(altLocacao.getPlaca());
} else {
System.out.println("Insira uma placa válida com 7 caracteres");
}
if (altLocacao.getTotalDias() >= 1) {
estrutura.informacao.setTotalDias(altLocacao.getTotalDias());
} else {
System.out.println("Total de dias inválido");
}
if (altLocacao.getValorDiaria() >= 50) {
estrutura.informacao.setValorDiaria(altLocacao.getValorDiaria());
} else {
System.out.println("Insira um valor de diária acima de 50R$");
}
}
}
buscarPorCodigo(estrutura.proximo, codigo);
}
}
}
Classe de Encadeamento
package estruturaencadeada;
public class EstruturaSimples<Locacao> {
public Locacao informacao;
public EstruturaSimples<Locacao> proximo;
}
Main
package main;
import java.util.Scanner;
import entidade.Locacao;
import servico.LocacaoServico;
public class Main {
public static void main(String[] args) {
LocacaoServico servico = new LocacaoServico();
int resp;
do {
Scanner entrada = new Scanner(System.in);
System.out.println("1 - Alugar");
System.out.println("2 - Listar Locação");
System.out.println("3 - Alterar Locação");
int opcao = entrada.nextInt();
switch (opcao) {
case 1:
System.out.println("código");
int codigo = entrada.nextInt();
System.out.println("CPF");
String cpf = entrada.next();
System.out.println("Placa");
String placa = entrada.next();
System.out.println("Valor");
double valor = entrada.nextDouble();
System.out.println("Dias");
int dias = entrada.nextInt();
Locacao locacao = new Locacao(codigo, cpf, placa, valor, dias);
servico.inicio = servico.add(servico.inicio, locacao);
break;
case 2:
servico.imprimirInicio(servico.inicio);
break;
case 3:
System.out.println("código");
int novoCodigo = entrada.nextInt();
System.out.println("CPF");
String novoCpf = entrada.next();
System.out.println("Placa");
String novaPlaca = entrada.next();
System.out.println("Valor");
double novoValor = entrada.nextDouble();
System.out.println("Dias");
int novoDias = entrada.nextInt();
Locacao novaLocacao = new Locacao(novoCodigo, novoCpf, novaPlaca, novoValor, novoDias);
servico.alterar(servico.inicio, novoCodigo, novaLocacao);
break;
}
System.out.println("Digite 0 para voltar ao menu");
resp = entrada.nextInt();
} while (resp == 0);
}
}