Como fazer para que uma classe guarde informações mesmo quando eu voltar para um Menu (main)

Estou tendo que criar uma agenda utilizando um Menu com várias opções e estou na parte de cadastrar um usuário, ao cadastrar o limite de usuários ele retorna ao menu, mas caso eu entre novamente em cadastrar, caso esteja no limite de usuários era para aparecer uma mensagem informando que não é possível, mas ao que parece, a classe não está guardando essas informações.

O que deveria fazer?

Segue o código:

// Adriano Assis
// Diogo Faria
// Jessica de Marchi
// Lavinia Miranda
// Victor Furtado
package agenda2;

import java.util.Scanner;
public class Agenda2 {

    public static void menu() {
        // println do Menu
        System.out.println("\tMENU DA AGENDA");
        System.out.println("\t1 - Novo Cadastro");
        System.out.println("\t2 - Excluir um amigo");
        System.out.println("\t3 - Alterar dia ou mês");
        System.out.println("\t4 - Consultar dia e mês");
        System.out.println("\t5 - Consultar aniversariantes do mês");
        System.out.println("\t6 - Consultar aniversariantes");
        System.out.println("\t7 - Mostrar agenda");
        System.out.println("\t8 - Sair");
        System.out.print("Opção: ");
    }

    public static void novocadastro() {
        Scanner entrada = new Scanner(System.in);
        Scanner entradaS = new Scanner(System.in);
        
        int n = 2;
        String nomes [] = new String[n];
        int dias [] = new int[n];
        int meses [] = new int[n];
        int i = 0;  
       
        while (i < n) {            
                    
        System.out.print("Digite o nome: ");
        nomes [i]= entradaS.nextLine();

        System.out.print("Digite o mês: ");
        meses [i]= entrada.nextInt();
        do{
        if (meses[i] < 1 || meses[i] > 12){
        System.out.print("Mês inválido, digite novamente: ");
        meses [i]= entrada.nextInt();
        }
        } while(meses[i] < 1 || meses[i] > 12);
        
        
        switch(meses[i]){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.print("Digite o dia: ");
                dias[i] = entrada.nextInt();
                do{
                if (dias[i] < 1 || dias[i] > 31){
                    System.out.print("Esse mês só tem 31 dias, "
                            + "digite novamente: ");
                    dias[i] = entrada.nextInt();
                }
                else {
                    System.out.println(" ");
                }
                } while(dias[i] < 1 || dias[i] > 31);
                System.out.println("Cadastro concluído!");
                System.out.println(" ");
                break;
                
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.print("Digite o dia: ");
                dias[i] = entrada.nextInt();
                do{
                if (dias[i] < 1 || dias[i] > 30){
                    System.out.print("Esse mês só tem 30 dias, "
                            + "digite novamente: ");
                    dias[0] = entrada.nextInt();
                }
                else {
                    System.out.println(" ");
                }
                } while(dias[i] < 1 || dias[i] > 30);
                System.out.println("Cadastro concluído!");
                System.out.println(" ");
                break;
                
            case 2:
                System.out.print("Digite o dia: ");
                dias[i] = entrada.nextInt();
                do{
                if (dias[i] < 1 || dias[i] > 29){
                    System.out.print("Esse mês só tem 29 dias, "
                            + "digite novamente: ");
                    dias[i] = entrada.nextInt();
                }
                else {
                    System.out.println(" ");
                }
                } while(dias[i] < 1 || dias[i] > 29);
                System.out.println("Cadastro concluído!");
                System.out.println(" ");
                break;                
                
            default: 
                menu();
        }
        i = i + 1;
        
        break;
    }
        if (i >= n){
            System.out.println("Agenda está cheia, para adicionar um novo "
                    + "amigo, por favor exclua alguém.");
            System.out.println(" ");
        }
    }    
    
    
    public static void excluir() {
        System.out.println("Excluir um amigo");
    }
    public static void alterar() {
        System.out.println("3 - Alterar dia ou mês");
    }
    public static void consuldm() {
        System.out.println("4 - Consultar dia e mês");
    }
    public static void anivermes() {
        System.out.println("5 - Consultar aniversariantes do mês");
    }
    public static void aniversariantes() {
        System.out.println("6 - Consultar aniversariantes");
    }
    public static void agenda() {
        System.out.println("7 - Mostrar agenda");
    }
    
     
    public static void main(String[] args){
        Scanner entrada = new Scanner(System.in);
        //entradas
        String opcao;       
        
        do{
            menu();
            opcao = entrada.nextLine();

             switch (opcao){
                 case "1":
                    novocadastro();
                    break;
                 case "2":
                    excluir();
                    break;
                 case "3":
                    alterar();
                    break;
                 case "4":
                    consuldm();
                    break;    
                 case "5":
                    anivermes();
                    break;    
                 case "6":
                    aniversariantes();
                    break;
                 case "7":
                    agenda();
                    break;   
                 case "8": 
                    System.out.println("Programa encerrado. "
                             + "Obrigado por utilizar a agenda!");
                    System.exit(0);
                    break;
                 default:
                    System.out.println("");
                    System.out.println("Opção inválida. As opções vão de"
                            + " 1 a 8");
                    System.out.println("");
                    System.out.print("Digite a opção novamente: ");
                    System.out.println(" ");
                }
         } while (opcao != "8");       
    } 
}

Obrigado, desde já!

Amigo coloque um system em baixo das linhas onde vc declarou suas variáveis

    int n = 2;
    int i = 0;
    String nomes [] = new String[n];
    int dias [] = new int[n];
    int meses [] = new int[n];
   System.out.println("Variavel i = "+i);

Quando chega ao final do cadastro ele adiciona + 1 a sua variável, mas logo em seguida sai do método e chama novamente o menu, então quando vc escolhe o cadastrar novamente as primeiras linhas de seu método vc está declarando e atribuindo o valor 0 novamente a variável i

PS: pode colocar esse mesmo system ao fim do método Cadastrar, pra ver como está adicionando