Ir ao conteúdo

Java Tecnico em Desenvolvimento de Sistema


Ir à solução Resolvido por ZTM,

Posts recomendados

Postado

Olá a todos como podem ver no titulo estou cursando Sistemas, não tenho muita experiência pois estou começando do zero, então gostaria de ajuda para resolver meu problema.

o Programa é sobre vetores, deve ser feito cadastro, pesquisa e sair. Meu problema está na pesquisa mas não sei ao certo se está fazendo o cadastro dos nomes de forma correta. Agradeço desde já para quem estiver disposto a me ajudar 

 

 //variaveis
     
      String[] cadastro = new String[15];
      int i = 0, opcao;
      String pesquisar, hospedesnome = "";
 
       do{
     System.out.println (" ______________________\n");
     System.out.println(" |  1-  Cadastrar     |    \n");
     System.out.println(" ______________________\n");
     System.out.println(" |  2- Pesquisar      |   \n");
     System.out.println(" ______________________\n");
     System.out.println("|   3- Sair          |   \n");
     System.out.println(" ______________________\n");

     System.out.println("Selecione a opção que deseja utilizar: ");
     opcao = entrada.nextInt();
     
     switch (opcao) {
            case 1:
                System.out.println("\nInforme o nome do hóspede que deseja fazer o cadastro: ");
               hospedesnome = entrada.next();
      
            {  if (i >= 15) {

             System.out.println(" não pode mais cadastrar");

                 } else {

              System.out.println(" O cadastramento foi um sucesso!!!");

               } if (i <= 14) 

             cadastro[i] = hospedesnome; }

                   i++;

              break;
       
             case 2: 
             System.out.println("\n Nome ao qual deseja pesquisar: ");
            pesquisar = entrada.nextLine();
            
         for (String cadastro1 : cadastro) {
             if (cadastro1.equals(pesquisar)) {
             }
         }
               
               break;

               
             case 3:
  
              System.out.println("Se deseja sair pressione a opcao indicada no menu");
                 opcao = entrada.nextInt();
    
               }
            }       
      while(opcao !=3); 
                 
          }
        }    

  • Solução
Postado

@TamiresAZ Olá TamireAZ, como vai?

 

Para começo de conversa, na minha cabeça não faz sentido você cadastrar, por exemplo, um indivíduo e pesquisar pelo nome ele mesmo, pois não irá retornar nenhuma informação, ou será que você só gostaria de ver se ele existe no array?

 

Já faz uns meses que não programo em Java, entretanto, fiz o software onde tu cadastra 15 pessoas na opção 1 e pode pedir para retornar todas elas na opção 2, sendo a opção 3 para finalizar o programa, talvez tenha ficado mais interessante, por que não entendi o objetivo desse seu software ou talvez tenha faltado informações, enfim. Segue abaixo algumas screenshots funcionando com a source, uma coisa que eu peço para não reparar são os nomes das variáveis(são bem estranhos) e a classe chamada robot, pois eu estava mexendo com robô em Java kkkkk, espero que tenha gostado.

 

Este é o Painel pedindo para você informar um número de opção.

 

spacer.png

 

Neste caso, o sujeito aperta 1 e digita os 15 nomes(hospedes).

 

spacer.png

 

Em seguida, ele é mandado para o Painel novamente e aperta o 2 para Pesquisar todo mundo cadastrado.

 

spacer.png

 

Retornará todos as pessoas que foram cadastradas anteriormente.

 

spacer.png

 

Aqui é quando o usuário final apertar 3, irá finalizar o software.

 

spacer.png

 

Nesta screenshot, não ligue para a classe robot, nome das variáveis, fiz um loop que vai fazer o software ficar consumindo, ou seja, eu mandaria tudo para o banco de dados, porém, como deve ser algo mais simples, acho que terminamos por aqui.

 

spacer.png

 

Peço para algum Moderador ou Coordenador colocar a tag Code no código abaixo, acabei de perceber que não tinha enviado a source.

import java.util.Scanner;

public class robot{
    
    public static void main(String arg[]){
    
        Scanner in = new Scanner(System.in);
        Scanner in2 = new Scanner(System.in);
        Scanner in3 = new Scanner(System.in);
        
        int opcao, i, test1;
        String hospede[] = new String[15];
        int pesquisa = 0;
        for(test1=0; test1<=100; test1+=0.01){
                
            System.out.println("Digite o número que deseja!\n");
            System.out.println("1 - Cadastrar\n");
            System.out.println("2 - Pesquisar\n");
            System.out.println("3 - Sair\n");
        
            opcao = in.nextInt();
                
            if(opcao == 1) {
                System.out.println("Digite o nome do hospede: ");
                    
                for(i=0; i<15; i++){
                        
                    hospede[i] = in2.nextLine();
                }
            } else if(opcao == 2) {
                for(pesquisa=0; pesquisa<15; pesquisa++) {
                    System.out.println("O cadastro " + pesquisa + " está vinculado(a) " + hospede[pesquisa]);
                }
            } else {
                
                    System.out.println("O sistema foi finalizado com sucesso!");
                    System.exit(0);
            }
        }
    }    
}

 

By ZTM

 

Até.

Postado

@TamiresAZ Seu código está cadastrando corretamente. Só achei estranho você adicionar um bloco de escopo dentro do case de cadastro, ele pode ser removido.

 

É uma boa ideia limpar o buffer do Scanner depois de ler um valor numérico, para evitar problemas na hora de ler um valor textual. Fora isso, percebi alguns probleminhas de convenção na nomenclatura das variáveis, mas não interfere na execução do problema, apenas na leitura.

 

Para pesquisa, você roda um for no vetor, desconsidera valores nulos pois são vazios. Os que sobrarem você verifica se atende ao critério da busca, se sim então imprime na tela, senão desconsidera.

 

Recomendo muito o uso de métodos, eles facilitam muito a organização do código. Abaixo segue uma possível solução usando métodos:

import java.util.Scanner;

public class CadastroMain {

    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        final int capacidade = 5;
        int       quantidade = 0;

        String[] cadastro = new String[capacidade];

        int opcao;

        do {
            opcao = mostrarMenu();

            switch (opcao) {
                case 0: // Sair
                    sair();
                    break;
                case 1: // Cadastrar
                    quantidade = cadastrar(cadastro, capacidade, quantidade);
                    break;
                case 2: // Pesquisar
                    pesquisar(cadastro);
                    break;
                default: // Opção inválida
                    mostrarErroOpcaoInvalida();
                    break;
            }
        } while (opcao != 0);
    }

    private static int cadastrar(String[] cadastro, int capacidade, int quantidade) {
        if (quantidade == capacidade) {
            System.out.println("[ E ]: Não há espaço no vetor.");
            return quantidade;
        }

        System.out.print("Digite o nome para cadastrar: ");
        String nome = scanner.nextLine();

        cadastro[quantidade] = nome;
        return quantidade + 1;
    }

    private static void mostrarErroOpcaoInvalida() {
        System.out.println("[ E ]: Opção inválida.");
    }

    private static int mostrarMenu() {
        System.out.print(
                "[ 1 ] Cadastrar\n" +
                "[ 2 ] Pesquisar\n" +
                "[ 0 ] Sair\n" +
                "> "
        );

        int opcao = scanner.nextInt();
        scanner.nextLine();

        return opcao;
    }

    private static void pesquisar(String[] cadastro) {
        System.out.print("Digite o nome para pesquisar: ");
        String pesquisa = scanner.nextLine();

        int resultadosEncontrados = 0;

        for (String nome : cadastro) {
            if (nome == null) {
                // Posição vazia, ignora
                continue;
            }

            if (nome.contains(pesquisa)) {
                // Fazemos a pesquisa pelo nome parcial
                System.out.println("Encontrado: '" + nome + "'");
                resultadosEncontrados += 1;
            }
        }

        if (resultadosEncontrados == 0) {
            System.out.println("[ I ]: Nenhum resultado encontrado.");
        } else {
            System.out.println(resultadosEncontrados + " resultados encontrados.");
        }
    }

    private static void sair() {
        System.out.println("Até mais.");
    }
}

 

Minha implementação de pesquisa realiza busca parcial, ou seja, se você pesquisar 'ana', o código retornará todos os nomes que CONTENHA 'ana' ('ana clara', 'analisa', 'joana', 'adriana', etc). Caso você queira pesquisar os nomes que sejam iguais, mude o contains pelo equals lá no método de pesquisa.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!