Validação de campo e método alterar

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

}

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.

1 curtida

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

Está dando algum erro?

Não. Ele simplesmente não altera.

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