Programa com Menu e Validação SIM ou NÃO em Java

Há tempos não programo e retornei para faculdade e estou com muita dificuldade para fazer um trabalho!

Segue abaixo a descrição do trabalho e o que já consegui fazer :frowning: !

Criar um programa para o gerenciamento de uma lista de nomes. Os nomes devem ser armazenados em um vetor do tipo String de tamanho 50. O programa deve possuir o seguinte menu:

1 - Adicionar um novo nome
2 - Apresentar os nomes
3 - Pesquisar um nome
4 - Remover um nome
0 - Sair

• Ao adicionar um novo nome:

– O nome deve ser lido via teclado;
– O nome deve ser inserido no final da lista;
– Caso a lista esteja cheia, apresentar uma mensagem indicativa ao usuário e não adicionar o nome
na lista;
– Não é permitido adicionar um nome já existente na lista. Caso já exista o nome na lista, apresentar
uma mensagem indicativa ao usuário.
• Ao apresentar os nomes:
– Se a lista estiver vazia, apresentar uma mensagem indicativa ao usuário;
– Os nomes devem ser apresentados na ordem em que foram inseridos na lista.
• Ao pesquisar um nome:
– Ler via teclado o nome a ser pesquisado;
– Apresentar uma mensagem informando se o nome foi ou não encontrado. Caso o nome tenha sido
encontrado, apresentar também a posição do nome no vetor.
• Ao remover um nome:
– Ler via teclado o nome a ser removido;
– Se o nome informado não estiver na lista, apresentar uma mensagem indicativa ao usuário;
– A posição que contém o nome a ser removido deve ser preenchida com o próximo nome e assim
sucessivamente. Não podem haver posições vazias no meio do vetor.

public static void main(String[] args) {
    menu();
}

public static void menu() {
    Scanner ler = new Scanner(System.in);
    int opcao = 0;
    do {
        System.out.println("     ******Gerenciamento de Lista de Nomes ******");
        System.out.println("     *        1 -> Adicionar um novo nome       *");
        System.out.println("     *        2 -> Apresentar os nomes          *");
        System.out.println("     *        3 -> Pesquisar um nome            *");
        System.out.println("     *        4 -> Remover um nome              *");
        System.out.println("     *        0 -> Sair                         *");
        System.out.println("     ********************************************");
        System.out.print("Informe somente uma das opções acima: ");
        opcao = ler.nextInt();
        switch (opcao) {
            case 1:
                cadastro();
                opcao = 0;
                break;
            case 2:
                apresentar();
                opcao = 0;
                break;

            case 3:
                pesquisar ();
                opcao = 0;
                break;
            case 4:
            case 0:
                System.out.println("****** FIM DO PROGRAMA ******");
                System.exit(0);
            default:
                System.out.print(" Essa não é uma opcao Válida ");
                break;
        }
    } while (true);

}

public static void cadastro() {
    String[] vetor = new String[TAM];
    String opcao = null;
    int contador = 1;
    do{
        for (int i = 0; i < vetor.length; i++){
        //Scanner ler = new Scanner(System.in);
        System.out.println("Infome um nome: ");
        vetor[i] = ler.nextLine();
        //contador++;
        System.out.println("Deseja continuar Informando: Sim ou Não ");
        opcao = ler.nextLine();          
        }   
                     
    }while(opcao.equalsIgnoreCase("Sim"));{
    
        System.out.println ("Por favor, Informe somente uma das opções abaixo:");
    
    }
}

public static void apresentar() {
    for (int i = 0; i < vetor.length; i++) {
        System.out.println(vetor[i] + "");

    }

}
public static boolean pesquisar (){
    for (int i = 0; i < vetor.length; i++){
        if(nome == vetor[i]){
          return true;  
        }
    }
    return false;
}`

Fiz desta forma:

public static void main(String[] args) {
        menu();

    }

    static String[] nomes = new String[10];
    

    public static void menu() {
        Scanner ler = new Scanner(System.in);
        int opcao = 0;
        do {
            System.out.println(" ******Gerenciamento de Lista de Nomes ******");
            System.out.println(" * 1 -> Adicionar um novo nome *");
            System.out.println(" * 2 -> Apresentar os nomes *");
            System.out.println(" * 3 -> Pesquisar um nome *");
            System.out.println(" * 4 -> Remover um nome *");
            System.out.println(" * 0 -> Sair *");
            System.out.println(" ********************************************");
            System.out.print("Informe somente uma das opções acima: ");
            opcao = ler.nextInt();
            Scanner nome;
            switch (opcao) {
                case 1:
                    System.out.print("Informe um nome: ");
                    nome = new Scanner(System.in);
                    if (!cadastro(nome.nextLine())) { // caso o metodo cadastrar retorne false
                        System.out.println("VETOR CHEIO, NÃO PODE SER ADICIONADO OUTRO NOME");
                    }
                    opcao = 0;
                    break;
                case 2:
                    apresentar();
                    opcao = 0;
                    break;
                case 3:
                    System.out.print("Informe um nome: ");
                    nome = new Scanner(System.in);
                    boolean existe = pesquisar(nome.nextLine());
                    System.out.println("Resultado: " + existe);
                    opcao = 0;
                    break;
                case 4:
                    System.out.print("Informe um nome: ");
                    nome = new Scanner(System.in);
                    boolean operacao = apagar(nome.nextLine());
                    System.out.println("Resultado: " + operacao);
                    opcao = 0;
                    break;
                case 0:
                    System.out.println("****** FIM DO PROGRAMA ******");
                    System.exit(0);
                default:
                    System.out.print(" Essa não é uma opcao Válida ");
                    break;
            }
        } while (true);
    }

    public static boolean cadastro(String nome) {
        boolean operacao = false;
        for (int i = 0; i < nomes.length; i++) {
            if (nomes[i] == null) { // verifica se é diferente de vazio, provavelmente vc n precisa desta linha
                nomes[i] = nome;
                operacao = true;
                break;
            }
        }
        return operacao;
    }

    public static void apresentar() {
        for (int i = 0; i < nomes.length; i++) {
            if (nomes[i] != null) { // verifica se é diferente de vazio, provavelmente vc n precisa desta linha
                System.out.println(i + 1 + ": " + nomes[i] + "");
            }
        }
    }

    public static boolean pesquisar(String nome) {
        for (int i = 0; i < nomes.length; i++) {
            if (nome.equals(nomes[i])) {
                return true;
            }
        }
        return false;
    }

    public static boolean apagar(String nome) {
        boolean resultado = false;
        if (pesquisar(nome)) { // utilizará da metodo pesquisar parasaber se o nome existe
            for (int i = 0; i < nomes.length; i++) {
                if (nome.equals(nomes[i])) {
                    nomes[i]=null;
                    return true;
                }
            }
        }else{
            System.out.println("Este nome não esta na lista");
        }
        return resultado;
    }

Desculpe se esqueci algumas condições, é que nem li direito o que precisava :stuck_out_tongue:

1 curtida

Boa noite, Galerinha!

4mega muito obrigada pela ajuda e desculpa demora para dar um retorno. Estava na correria da faculdade mas vou logo logo vou postar meu código aqui de como ficou e algumas duvidas.

Muito obrigada a todos.

1 curtida