Validação de campo e método alterar

5 respostas
java
A

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

}

5 Respostas

RoinujNosde

Os seus ifs basicamente fazem a verificação e mostram a mensagem, nada mais.
Use return; dentro do if para o método não continuar.

A

Obrigado, realmente ajudou. Estou aprendendo a validar esses campos agora. Sabe informar porque o método alterar não está alterando ?

RoinujNosde

Está dando algum erro?

A

Não. Ele simplesmente não altera.

Fefo80

Execute em modo debug, pra ver em qual teste (if) ele está passando direto pro final do método.

Criado 20 de maio de 2021
Ultima resposta 20 de mai. de 2021
Respostas 5
Participantes 3