Fiz o exercício usndo if e else dentro de um while e funcionou, então tentei fazer por switch case, mas estou tento algum erro na lógica do meu programa ao qual ele não reconhece o caso 2 e nem o caso 3, como eu poderia resolver?
import java.util.Scanner; import java.util.Random; public class JogoDaAdivinhacao {
public static void main(String[] args) {
    Scanner leitor = new Scanner(System.in);
    int numeroCerto = new Random().nextInt(100);
    int tentativa = 0;
    while (tentativa < 5) {
        System.out.println("Digite um valor entre 0 e 100: ");
        int valor = leitor.nextInt();
        int caso = 0;
        tentativa++;
        if (valor <= 0 && valor >= 100){
            caso = 1;
        }
        else if (valor == numeroCerto) {
            caso = 2;
        }
        else{
            caso = 3;
        }
        switch (valor) {
            case 1:
                for (int i = 0; i < 3; i++) {
                    if (valor > numeroCerto) {
                        System.out.println("o valor é maior que o número gerado aleatóriamente");
                    } else {
                        System.out.println("o valor é menor que o número gerado aleatóriamente");
                    }
                }
                break;
            case 2:
                System.out.println("Acertou, e com o total de " +tentativa + "tentativas você acertou advinhou o número: " + numeroCerto);
                break;
           case 3:
                System.out.println("valor inválido");
                break;
            }
        }
}
 
            