Idade media e idade menor e maior?

Estou realizando um programa que recebe a idade de todos os estudantes de uma turma, e no final tenho que exibir a media das idades e a idade maior e a menor.

public class Programa5
{
     public static void main(String[] args)
     {
          double idade, media, alunos;
          
          alunos = Entrada.leiaDouble("Quantos alunos tem em sua sala");
          
          for (int i = 0; i != alunos; i++)
          {
               idade = Entrada.leiaDouble("Informe sua idade!");
               media = idade / alunos; 
               
               if (idade <= 1)
               {
                 System.out.println("O(s) aluno(s) mais novo(s): "+idade);
               }
               else
               {
                 System.out.println("O(s) aluno(s) mais velho(s): "+idade);
               }
          }
     }
}

Fiz isso! Como ele não tem um numero de repetições determinado, ele vai repetir de acordo com a quantidade de alunos, só que quando ele mostra a resposta final, se eu digitar que na sala tem 10 alunos, ele vai mostrar 10 respostas com a media das 10 idades.

Eu queria que esse programa mostrasse a media de todos estudantes e no final a idade do maior estudante e a do menor. Alguém me da uma dica de como posso fazer isso?

Evite usar double (consome mais memória), use int para esses cálculos, a não ser que você queira calcular os meses como 10.5 (dez anos e cinco meses) por exemplo…

int idade, media = 0, alunos, maior, menor;
alunos = Entrada.leiaInt("Quantos alunos tem em sua sala");

for (int i = 0; i < alunos; i++) 
{
    idade = Entrada.leiaInt("Informe sua idade!");
    media += idade; // apenas acumule as idades

    if (i == 0) {
        menor = idade;
        maior = idade;
    } else if (idade < menor) {
        menor = idade;
    } else if (idade > maior) {
        maior = idade;
    }
}

System.out.println("Média de idade: " + (media / alunos));
System.out.println("Menor idade: " + menor);
System.out.println("Maior idade: " + maior);

Utilize as funcionalidade do JAVA 8:

public static void main(String[] args) {
    maximo(10, 5, 8, 6, 7, 9, 8, 5, 9, 8);
    minimo(10, 5, 8, 6, 7, 9, 8, 5, 9, 8);
    media(10, 5, 8, 6, 7, 9, 8, 5, 9, 8);
  }
  
  private static void maximo(int... idades){
    //Gere um Stream com as idade
    IntStream stream = IntStream.of(idades);
    // O max retorna um OptionalInt pois talvez não exista este valor
    OptionalInt maior = stream.max();
    //ifPresent executa se o valor existir
    // o System.out::println é um metodo por referência
    maior.ifPresent(System.out::println);
  }
  
  private static void minimo(int... idades){
    // mesma regra do max
    IntStream stream = IntStream.of(idades);
    OptionalInt minimo = stream.min();
    minimo.ifPresent(System.out::println);
  }
  
  private static void media(int... idades){
    // mesma regra do max
    IntStream stream = IntStream.of(idades);
    OptionalDouble media = stream.average();
    media.ifPresent(System.out::println);
  }

Obs.: fiz uma chamada em cada linha para facilitar a explicação, mas é possível realizar chamadas encadeadas o que torna o código menos verboso:

private static void minimo(int... idades){
    IntStream.of(idades)
      .min()
      .ifPresent(System.out::println);
  }

Aqui nesta parte, tanto para a variável menor como pra maior, o programa diz que ela não foi inicializada!

É que a declaração delas foi feita sem inicialização.

int idade, media = 0, alunos, maior, menor;

Observe a declaração de media

Obrigado pessoal, consegui resolver aqui, graças a ajuda de tds vcs. Muito obrigado!