Preciso imprimir o nome do aluno mais velho e do mais novo mas estou tendo problemas no meu código

package roteirovetor;
import java.util.Scanner;
public class Jose01 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String []aluno = new String[3];
int []idade = new int [3];
int maior16 = 0, menor16 = 0, mediama=0;
int velho = 0, novo = 0,menor=0, maior=0;
String nomem=null , nomev=null;
float soma = 0, media = 0;
for (int i=0; i<aluno.length; i++){
System.out.println("Digite o nome do " +(i+1)+ "° aluno: ");
aluno [i] = scan.next();
System.out.println("Digite a idade do " +(i+1)+ "° aluno: ");
idade [i] = scan.nextInt();

    if (idade[i]<=16){
            menor16++;
        }
    
    else{
          maior16++;
      }
   
    soma += idade[i];
    media = soma/(i+1);
    
    if (idade[i]<media){
            mediama++;
    }
    
    if (idade[i]<menor){
        menor=idade[i];
        nomem = aluno[i];
    }
    else if (idade[i]>maior)
        maior = idade[i];
        nomev = aluno[i];        
    }
    
    
    
    System.out.println("A quantidade de aluno(s) com idade inferior ou igual a 16 é(são): " +menor16);
    System.out.println("A quantidade de aluno(s) com idade superior a 16 é(são): " +maior16);
    System.out.println("A média da iadades é: " +media);
    System.out.println("A quantidade de aluno(s) com idade acima da media é(são) :" +mediama);
    System.out.println("O aluno " +nomev+ " que é o mais velho tem " +maior+ " anos.");
    System.out.println("O aluno " +nomem+ " que é o mais novo tem " +menor+ " anos.");
}

}

A não ser que introduzas idades negativas, nunca vais ter uma idade menor que o 0 inicial. O valor inicial de menor não de ser zero, tem de ser um número muito grande, como por exemplo menor = Integer.MAX_VALUE