Erro de Lógica

Pessoal, estou dando os meus primeiros passos em JAVA e como tudo no começo é mais difícil saber por que o meu código não mostra os dois valores. Ou seja o maior e menor valor.
Neste caso, o meu código só imprime o menor ou o maior e nunca os dois valores. Poderiam me ajudar?
Muito obrigado!

import java.util.Scanner;

public class MaiorMenor2_24 {

public static void main(String[] args) {

	// Entre com cinco números inteiros e mostre o maior e o menor valor

	Scanner input = new Scanner(System.in);

	System.out.print("Entre com o primeiro valor ");
	int num1 = input.nextInt();

	System.out.print("Entre com o segundo valor ");
	int num2 = input.nextInt();

	System.out.print("Entre com o terceiro valor ");
	int num3 = input.nextInt();

	System.out.print("Entre com o quarto valor ");
	int num4 = input.nextInt();

	System.out.print("Entre com o quinto valor ");
	int num5 = input.nextInt();

	System.out.println();

	int maior = 0;
	int menor = 0;
	if (num1 > num2 && num1 > num3 && num1 > num4 && num1 > num5) {
		maior = num1;
	
	} else if (num1 < num2 && num1 < num3 && num1 < num4 && num1 < num5) {
		menor = num1;

	if (num2 > num1 && num2 > num3 & num2 > num4 && num2 > num5) {
		maior = num2;
	
		} else if (num2 < num1 && num2 < num3 && num2 < num4 && num2 < num5) {
			menor = num2;
		

	if (num3 > num1 && num3 > num2 && num3 > num4 && num3 > num5) {
		maior = num3;
				

		} else if (num3 < num1 && num3 < num2 && num3 < num4 && num3 < num5) {
			menor = num3;
				

	if (num4 > num1 && num4 > num2 && num4 > num3 && num4 > num5) {
		maior = num4;
					

		} else if (num4 < num5 && num4 < num1 && num4 < num2 && num4 < num3) {
			menor = num4;
				

	if (num5 > num1 && num5 > num2 && num5 > num3 && num5 > num4) {
		maior = num5;
		
		 } else if (num5 < num1 && num5 < num2 && num5 < num3 && num5 < num4) {
				menor = num5;

					}

				}
			}

		}
	}
	System.out.println("O maior valor informado é " + maior);
	System.out.println("O menor valor informado é " + menor);

}

}

Existem N formas de resolver.

Abaixo uma forma sem usar laços nem métodos:

import java.io.PrintStream;
import java.util.Scanner;

public class MaiorMenor2_24 {

    private static final Scanner input = new Scanner(System.in);
    private static final PrintStream output = System.out;

    public static void main(String[] args) {

        // Entre com cinco números inteiros e mostre o maior e o menor valor
        output.print("Entre com o primeiro valor ");
        int num1 = Integer.parseInt(input.nextLine());

        output.print("Entre com o segundo valor ");
        int num2 = Integer.parseInt(input.nextLine());

        output.print("Entre com o terceiro valor ");
        int num3 = Integer.parseInt(input.nextLine());

        output.print("Entre com o quarto valor ");
        int num4 = Integer.parseInt(input.nextLine());

        output.print("Entre com o quinto valor ");
        int num5 = Integer.parseInt(input.nextLine());

        output.println();

        int maior = num1;
        if (num2 > maior) {
            maior = num2;
        }
        if (num3 > maior) {
            maior = num3;
        }
        if (num4 > maior) {
            maior = num4;
        }
        if (num5 > maior) {
            maior = num5;
        }

        int menor = num1;
        if (num2 < menor) {
            menor = num2;
        }
        if (num3 < menor) {
            menor = num3;
        }
        if (num4 < menor) {
            menor = num4;
        }
        if (num5 < menor) {
            menor = num5;
        }
        output.println("O maior valor informado é " + maior);
        output.println("O menor valor informado é " + menor);
    }
}