Alguém sabe o problema desse código?Serve pra ler o nome e idade de 3 pessoas e falar o nome do mais velho e do mais novo

package exercicio1;

import java.util.Scanner;

public class Exercicio1 {

public static void main(String[] args) {

    Scanner a = new Scanner(System.in);
    int c = 0;
    int menor = 0;
    String nomemenor = null;
    int maior = 0;
    String maioridade = null;
    int idade[] = new int[3] ;
    String nome[] = new String [3];

    for (int i = 0; i<3 ; i++){
        System.out.printf("Digite o %d° nome: ",i+1);
        nome[i] = a.nextLine();
        System.out.printf("Digite a %d° idade: ",i+1);
        idade[i] = a.nextInt();
        if (c == 0){
            menor = idade[i];
            nomemenor = nome[i];
        }
        else{
            if(idade[i]<menor){
                menor = idade[i];
                nomemenor=nome[i];
                
                
            }
        }
         if (c == 0){
            maior = idade[i];
            maioridade = nome[i];
        }
        else{
            if(idade[i]>maior){
                maior = idade[i];
                maioridade=nome[i];
                
                
            }
        }
        
        c++;
        
        
    }
    System.out.printf("A pessoa mais velha se chama %s e tem %d anos. \n",maioridade,maior);
    System.out.printf("A pessoa mais nova se chama %s e tem %d anos. \n ",nomemenor,menor);
}

}

O problema aí é a lógica. Mais qual é o erro específico

Ele pergunta normalmente o primeiro nome e a primeira idade,mas depois ele pula os outros nomes,mostrando a pergunta,mas só a idade é contabilizada na 2° e 3° resposta

Dúvida já foi,o problema se deu pela incompatibilidade de tipos do Scanner,que é facilmente resolvido criando outro Scanner para cada valor