Repetição com If e Else

Bom, estou tentando fazer um System.out.println para a pessoa digitar um número de 1 a 4, e usei um If para validar, caso ela digitar um valor menor ou maior que esses, vai entrar em um Else que faça retornar para ela digitar novamente os números válidos. Já fiz algo assim a muito tempo e não consigo mais lembrar e não achei nada igual. Segue o código:

           System.out.println("QUAL OPÇÃO DESEJA ESCOLHER?\n" 
               + "1 - Adicionar\n"
               + "2 - Consultar\n"
               + "3 - Modificar\n"
               + "4 - Remover\n");

       int opcao = ler.nextInt();

       if(opcao > 0 && opcao < 5) {
        switch(opcao) {
             case 1:
                 adiciona(myDoc);
                 break;
             case 2: 
                 consulta(myDoc);
                 break;
             case 3: 
                 modifica(myDoc);
                 break;
             case 4: 
                 remove(myDoc);
                 break;
        }
       }else {
           System.out.println("OPÇÃO INVÁLIDA!!!!");
       }
do {
    seuCodigoAqui
    } while (opcao > 0 && opcao < 5);
int opcao = 0;
LOOP: do {
    System.out.println("QUAL OPÇÃO DESEJA ESCOLHER?\n" 
                     + "1 - Adicionar\n"
                     + "2 - Consultar\n"
                     + "3 - Modificar\n"
                     + "4 - Remover\n");

    opcao = Integer.parseInt(ler.nextLine());

    switch (opcao) {
        case 1:
            adiciona(myDoc);
            break LOOP;
        case 2: 
            consulta(myDoc);
            break LOOP;
        case 3: 
            modifica(myDoc);
            break LOOP;
        case 4: 
            remove(myDoc);
            break LOOP;
        default:
            System.out.println("OPÇÃO INVÁLIDA!!!!");
            continue LOOP;
    }
} while (opcao < 1 || opcao > 4);

Na verdade você nem precisa testar a variável opcao dentro do while, pois ela já é testada no seu switch.
você pode simplesmente usar um while (true), pois quando cais num case válido do seu switch, você faz um break do loop.

Veja:

LOOP: do {
    System.out.println("QUAL OPÇÃO DESEJA ESCOLHER?\n" 
                     + "1 - Adicionar\n"
                     + "2 - Consultar\n"
                     + "3 - Modificar\n"
                     + "4 - Remover\n");

    int opcao = Integer.parseInt(ler.nextLine());

    switch (opcao) {
        case 1:
            adiciona(myDoc);
            break LOOP;
        case 2: 
            consulta(myDoc);
            break LOOP;
        case 3: 
            modifica(myDoc);
            break LOOP;
        case 4: 
            remove(myDoc);
            break LOOP;
        default:
            System.out.println("OPÇÃO INVÁLIDA!!!!");
            continue LOOP;
    }
} while (true);
1 curtida