Como utilizar o Return para retornar a um comando

Boa Tarde Pessoal, sou novo no universo java, estou no 2º período de sistema.
A dúvida é o seguinte.
Preciso validar um campo onde checa se o apartamento contém morador ou não. No caso do meu raciocínio quero que quando ele retornar o valor existente no meu array, ele entra em loop e retorna a pedir o número do apê.
Olha o código .

System.out.println("\n :::COOCAR MORADOR EM APARTAMENTO:::\n");
Morador mora = new Morador();
boolean moradorNoApe = false;

    System.out.print("Qual Apartamento Deseja Reservar ?: ");
    int reservaAp = Integer.parseInt(leitura.nextLine());
    int validaApe;
    for (int j = 0; j < apartamentos.length; j++) {
        if (apartamentos[j].getNumero() == reservaAp) {
            validaApe = apartamentos[j].getNumero();
            if (apartamentos[j].getNumero() != validaApe) {
                System.out.println("*** APARTAMENTO JÁ CONTÉM MORADOR ***");
                return;
            } else {
            }
        }
    }

em especial eu não utilizei minha variável boolean, não percebi necessidade no momento.
E por falta de conhecimento eu não sei se o comando Return pode fazer isso, deduzi pela tradução kkk …
eu costumo usar o “do while” para tipos de validações, mas se caso o return é capaz, por favor, me deem dicas !

return serve pra duas coisas

  1. se o metodo tem um tipo, vc retorna aquele tipo
public int dobro(int valor){ return 2 * valor ; }

// uso

int valor = dobro( 4 ); // valor agora tem 8

2 se o metodo não tem tipo ( void ). ai vc interrompe o metodo.

util se vc quer terminar uma sequencia logica, interromper varios loops, etc.

no seu exemplo, o return interrompe todo o metodo.

se vc quer interromper um loop, vc tem uma palavra reservada chamada break; isso vai interromper um loop mais ‘interno’. se vc tem mais de um loop e quer terminar tudo vc pode usar um LABEL mas isso é uma outra historia.

veja se no seu caso um break não faz mais sentido.

Primeiramente @peczenyj Quero te agradecer por responder e tirar dúvida em relação ao “return”.
Bom vamos ao caso.
Eu fiz a validação de trocar o método return para break e ele consequentemente pula para o método de baixo que no meu caso seria pedir o nome do morador.
Bem, estou com um código bastante aprendiz e estou trabalhando para melhorá-lo.
Veja o código por mais completo.

static public void colocarMoradoremApartamento() {
System.out.println("\n :::COOCAR MORADOR EM APARTAMENTO:::\n");
Morador mora = new Morador();
boolean moradorNoApe = false;

    System.out.print("Qual Apartamento Deseja Reservar ?: ");
    int reservaAp = Integer.parseInt(leitura.nextLine());
    int validaApe;
    for (int j = 0; j < apartamentos.length; j++) {
        if (apartamentos[j].getNumero() == reservaAp) {
            validaApe = apartamentos[j].getNumero();
            if (apartamentos[j].getNumero() != validaApe) {
                System.out.println("*** APARTAMENTO JÁ CONTÉM MORADOR ***");
                break;
            } else {
            }
        }
    }
    for (int i = 0; i < apartamentos.length; i++) {
        if (apartamentos[i].getNumero() == reservaAp) {
            System.out.print("Digite o nome do novo morador: ");
            mora.setNome(leitura.nextLine());
            //VALIDA O CODIGO JA EXISTENTE
            int validacao;
            System.out.print("Digite o código do Sr(a). " + mora.getNome() + ": ");
            mora.setCodigo(Integer.parseInt(leitura.nextLine()));
            validacao = mora.getCodigo();
            for (int j = 0; j < apartamentos.length; j++) {
                if (apartamentos[i].getMorador() != null) {
                    if (apartamentos[i].getMorador().getCodigo() == validacao) {
                        System.out.println("*** Código já existente ***");
                        break;
                    } else {
                    }
                }
            }
            System.out.print("Digite a idade: do Sr(a). " + mora.getNome() + ": ");
            mora.setIdade(Integer.parseInt(leitura.nextLine()));
            System.out.print("O(a) Sr(a)" + mora.getNome() + " é casado(a) ?: ");
            mora.setCasado(Boolean.parseBoolean(leitura.nextLine()));
            if (mora.isCasado() == true) {
                System.out.print("Qual o nome da marido ou esposa?: ");
                mora.setParceiro(leitura.nextLine());
            }
            System.out.print("Digite a Quantidade de filhos: ");
            mora.setQuantFilhos(Integer.parseInt(leitura.nextLine()));
            apartamentos[i].setMorador(mora);
            moradorNoApe = true;
            System.out.println("\n          ***MORADOR CADASTRADO COM SUCESSO***\n");
        }
    }
}

Seu código não “pula” de um método para outro.
Ele simplesmente interrompe um laço para entrar em outro

Eai @staroski, vejo você direto respondendo as duvidas do pessoal ai, parabéns ai pela dedicação ai sempre.

Sim, básicamente essa é a lógica do código né.

Mas vamos a minha questão !

Preciso validar o campo de numeração do apartamento se caso ele já conter algum morador, ele repete o processo de busca do número do apartamento .

Tem alguma dica valiosa para me fornecer ?
tipo um “do while” ou algum laço de repetição que faça essa validação !?

Segue exemplo hipotético:

public class Exemplo {

	private static final Scanner IN = new Scanner(System.in);

	public static void main(String[] args) {
		Exemplo exemplo = new Exemplo();
		exemplo.colocarMoradoremApartamento();
	}

	private final Apartamento[] apartamentos = // sei lá como você inicializa seus apartamentos */

	public void colocarMoradoremApartamento() {
		System.out.println("Colocar morador em apartamento");
		Apartamento apartamento = selecionaApartamento();
		Morador morador = cadastraMorador();
		apartamento.setMorador(morador);
	}

	private int cadastraCodigo(String nome) {
		int codigo = -1;
		do {
			System.out.print("Digite o código do Sr(a). " + nome + ": ");
			codigo = Integer.parseInt(IN.nextLine());
		} while (!codigoValido(codigo));
		return codigo;
	}

	private Morador cadastraMorador() {
		System.out.print("Digite o nome do novo morador: ");
		String nome = IN.nextLine();

		int codigo = cadastraCodigo(nome);

		System.out.print("Digite a idade: do Sr(a). " + nome + ": ");
		int idade = Integer.parseInt(IN.nextLine());

		System.out.print("O(a) Sr(a)" + nome + " é casado(a) ?: ");
		boolean casado = Boolean.parseBoolean(IN.nextLine());

		String parceiro = null;
		if (casado) {
			System.out.print("Qual o nome da marido ou esposa?: ");
			parceiro = IN.nextLine();
		}

		System.out.print("Digite a Quantidade de filhos: ");
		int filhos = Integer.parseInt(IN.nextLine());

		Morador morador = new Morador();
		morador.setNome(nome);
		morador.setCodigo(codigo);
		morador.setIdade(idade);
		morador.setCasado(casado);
		morador.setParceiro(parceiro);
		morador.setQuantFilhos(filhos);
		System.out.println("Morador cadastrado com sucesso");
		return morador;
	}

	private boolean codigoValido(int codigo) {
		for (int i = 0; i < apartamentos.length; i++) {
			Morador morador = apartamentos[i].getMorador();
			if (morador != null && morador.getCodigo() == codigo) {
				System.out.println("*** Código já existente ***");
				return false;
			}
		}
		return true;
	}

	private Apartamento selecionaApartamento() {
		while (true) {
			System.out.print("Qual apartamento deseja reservar ?: ");
			int numero = Integer.parseInt(IN.nextLine());
			Apartamento apartamento = validaApartamento(numero);
			if (apartamento != null) {
				return apartamento;
			}
			System.out.println("Apartamento ocupado!");
		}
	}

	private Apartamento validaApartamento(int numero) {
		for (int i = 0; i < apartamentos.length; i++) {
			if (numero == apartamentos[i].getNumero() && apartamentos[i].getMorador() == null) {
				return apartamentos[i];
			}
		}
		System.out.println("Apartamento invalido!");
		return null;
	}
}