Consultar/listar

3 respostas
J

Boa noite, estou fazendo um código onde tenho q listar todos os hoteis encontrados de acordo com as caracteristicas desejada pelo usuário...

Ex: Se ele quuiser um hotel que tenha piscina, o programa terá q listar todos os hoteis que tenha uma piscina disponivel...

O problema que tou enfrentando é para faze-lo listar todos hoteis encontrados, pois ele só está exibindo o primeiro...

package src;

import java.util.*;
import javax.swing.*;

public class Consulta {

	//Constantes
	
		// Cadastro
	    private static final int CADASTRAR = 00;
	
		//Facilidades
	    private static final int CONSULTAR = 11;
	    
		private static final int PISCINA = 1;
		private static final int RESTAURANTE = 2;
		private static final int AUDITORIO = 3;
		private static final int ACESSO_INTERNET = 4;
		private static final int ACADEMIA = 5;
		private static final int ESTACIONAMENTO = 6;
		
		//OPERAÇÕES
		private static final String PROMPT_OPERACAO = 
			"\n Escolha a opção desejada: " +
			"\n (00) CADASTRAR" +
			"\n (11) CONSULTAR";
		
		private static final String PROMPT_OPERACAO_FACILIDADES = 
			"\n Escolha a facilidade desejada para consulta os hoteis: " +
			"\n (1) PISCINA" +
			"\n (2) RESTAURANTE" +
			"\n (3) AUDITORIO" +
			"\n (4) ACESSO A INTERNET" +
			"\n (5) ACADEMIA" +
                        "\n (6) ESTACIONAMENTO";
		
		// FLAG
		private static final String PROMPT_CONTINUA = "DESEJA CONTINUAR?";
		
		
		// PERGUNTAS DO CADASTRO
		
		 private static final String PROMPT_NOME = "Informe o nome do hotel: ";
		 private static final String PROMPT_ENDERECO = "Informe o endereço do hotel: ";
		 private static final String PROMPT_CLASSIFICACAO = "Informe a classificação do hotel (estrelas): ";
		 private static final String PROMPT_NUMERO_QUARTOS = "Informe o número de quartos do hotel: ";
		 private static final String PROMPT_PISCINA = "O hotel possui piscina (s/n)?: ";
                 private static final String PROMPT_RESTAURANTE = "O hotel possui restaurante (s/n)?: ";
                 private static final String PROMPT_AUDITORIO = "O hotel possui auditorio (s/n)?: ";
                 private static final String PROMPT_ACESSO_INTERNET = "O hotel possui internet (s/n)?: ";
                 private static final String PROMPT_ACADEMIA = "O hotel possui academia (s/n)?: ";
                 private static final String PROMPT_ESTACIONAMENTO = "O hotel possui estacionamento (s/n)?: ";
		
		 
		 // Criação de um objeto ArrayList para armazenar os dados das pessoas
		 private static ArrayList cadastro = new ArrayList();
		
		
		 
//############################### INÍCIO: MAIN #######################################
	
		 /**
		   * Método main.
		   */
		  public static void main(String[] args) {

		    int continua;
			// Entrada dos dados de cadastro
		    do {

		  
		      int op = Integer.parseInt(JOptionPane.showInputDialog(null, PROMPT_OPERACAO, "Menu Principal", JOptionPane.INFORMATION_MESSAGE));
		      switch (op) {
		        case CADASTRAR:
		          cadastrar();
		          break;
		        case CONSULTAR:
		          consultar();
		          break;
		        default:
		          JOptionPane.showMessageDialog(null, "Opção inválida ou não implementada.", "ATENÇÃO!", JOptionPane.ERROR_MESSAGE);
		      } // fim do switch

		      // Perguntar se o usuário quer continuar
		      continua = JOptionPane.showConfirmDialog(null, PROMPT_CONTINUA, "Continuar?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);

		    } while(continua == JOptionPane.YES_OPTION);

		  } // fim do main	 
//############################### FIM: MAIN ##########################################
		  
		  
//############################### INICIO: CADASTRAR ##################################	 
		  /**
		   * Método cadastrar.
		   */
		  public static void cadastrar() {
		    
			  Hotel hotel = new Hotel();

		      // Leitura do nome
		      hotel.setNome( JOptionPane.showInputDialog(null, PROMPT_NOME) );

		      // Leitura do endereco
		      hotel.setEndereco( JOptionPane.showInputDialog(null, PROMPT_ENDERECO) );

		      // Leitura do classificacao
		      hotel.setClassificacao( JOptionPane.showInputDialog(null, PROMPT_CLASSIFICACAO) );
		      
		      // Leitura do numero de quartos
		      hotel.setNumeroQuartos( JOptionPane.showInputDialog(null, PROMPT_NUMERO_QUARTOS) );
		      
		      // Leitura facilidades
		      JOptionPane.showMessageDialog(null, "Digite S (sim) se o hotel possui esta facilidade e N (não) para caso não possua");

                      // Picina
		      hotel.setPiscina( JOptionPane.showInputDialog(null, PROMPT_PISCINA) );

                      //
                      hotel.setRestaurante( JOptionPane.showInputDialog(null, PROMPT_RESTAURANTE) );

                      //
                      hotel.setAuditorio( JOptionPane.showInputDialog(null, PROMPT_AUDITORIO) );

                      //
                      hotel.setAcesso_internet( JOptionPane.showInputDialog(null, PROMPT_ACESSO_INTERNET) );

                      //
                      hotel.setAcademia( JOptionPane.showInputDialog(null, PROMPT_ACADEMIA) );

                      //
                      hotel.setEstacionamento( JOptionPane.showInputDialog(null, PROMPT_ESTACIONAMENTO) );

		      // Adicionar o hotel na coleção
		      cadastro.add(hotel);
		  } // fim do cadastrar
  
		  
//############################### FIM: CADASTRAR ##################################### 
		  
		  
		  
//############################### INICIO: CONSULTAR ##################################	 
		  /**
		   * Método consultar
		   */
		  public static void consultar() {
		    // flag para indicar se encontrou os hoteis com a facilidade
		    boolean achei = false;

		    // solicitar que entre com a facilidade
		    int facilidade = Integer.parseInt(JOptionPane.showInputDialog(null, PROMPT_OPERACAO_FACILIDADES,
		    		"Menu Facilidades", JOptionPane.INFORMATION_MESSAGE));
		    
		    // iterador: percorre os elementos da coleção
		    Iterator i = cadastro.iterator();
		    
		    switch(facilidade){
		    
		    case PISCINA:
		    	
		    	// ACHAR HOTEL COM PISCINA
		    	
		    		while (!achei && i.hasNext()){
                                    
                                    Hotel h = (Hotel) i.next();

                                    if (h.getPiscina().equalsIgnoreCase("s")){

		    			JOptionPane.showMessageDialog(null, "Hotel(is) encontrado(s):" + h.getNome(), 
		    			"Resultado da Consulta", JOptionPane.INFORMATION_MESSAGE);
		    			achei = true;
                                        
		    		}// fim do if

                        }// fim do while

		    		if(!achei){
		    			JOptionPane.showMessageDialog(null, "Hotel(is) não encontrado(s)");
		    		}// fim do if
		    	break;

                       case RESTAURANTE:

		    	// ACHAR HOTEL COM RESTAURANTE

		    		while (!achei && i.hasNext()){

                                    Hotel h = (Hotel) i.next();

                                    if (h.getRestaurante().equalsIgnoreCase("s")){

		    			JOptionPane.showMessageDialog(null, "Hotel(is) encontrado(s):" + h.getNome(),
		    			"Resultado da Consulta", JOptionPane.INFORMATION_MESSAGE);
		    			achei = true;

		    		}// fim do if

                        }// fim do while

		    		if(!achei){
		    			JOptionPane.showMessageDialog(null, "Hotel(is) não encontrado(s)");
		    		}// fim do if
		    	break;

                        case AUDITORIO:

		    	// ACHAR HOTEL COM AUDITÓRIO

		    		while (!achei && i.hasNext()){

                                    Hotel h = (Hotel) i.next();

                                    if (h.getAuditorio().equalsIgnoreCase("s")){

		    			JOptionPane.showMessageDialog(null, "Hotel(is) encontrado(s):" + h.getNome(),
		    			"Resultado da Consulta", JOptionPane.INFORMATION_MESSAGE);
		    			achei = true;

		    		}// fim do if

                        }// fim do while

		    		if(!achei){
		    			JOptionPane.showMessageDialog(null, "Hotel(is) não encontrado(s)");
		    		}// fim do if
		    	break;

                        case ACESSO_INTERNET:

		    	// ACHAR HOTEL COM INTERNET

		    		while (!achei && i.hasNext()){

                                    Hotel h = (Hotel) i.next();

                                    if (h.getAcesso_internet().equalsIgnoreCase("s")){

		    			JOptionPane.showMessageDialog(null, "Hotel(is) encontrado(s):" + h.getNome(),
		    			"Resultado da Consulta", JOptionPane.INFORMATION_MESSAGE);
		    			achei = true;

		    		}// fim do if

                        }// fim do while

		    		if(!achei){
		    			JOptionPane.showMessageDialog(null, "Hotel(is) não encontrado(s)");
		    		}// fim do if
		    	break;

                         case ACADEMIA:

		    	// ACHAR HOTEL COM ACADEMIA

		    		while (!achei && i.hasNext()){

                                    Hotel h = (Hotel) i.next();

                                    if (h.getAcademia().equalsIgnoreCase("s")){

		    			JOptionPane.showMessageDialog(null, "Hotel(is) encontrado(s):" + h.getNome(),
		    			"Resultado da Consulta", JOptionPane.INFORMATION_MESSAGE);
		    			achei = true;

		    		}// fim do if

                        }// fim do while

		    		if(!achei){
		    			JOptionPane.showMessageDialog(null, "Hotel(is) não encontrado(s)");
		    		}// fim do if
		    	break;

                         case ESTACIONAMENTO:

		    	// ACHAR HOTEL COM ESTACIONAMENTO

		    		while (!achei && i.hasNext()){

                                    Hotel h = (Hotel) i.next();

                                    if (h.getEstacionamento().equalsIgnoreCase("s")){

		    			JOptionPane.showMessageDialog(null, "Hotel(is) encontrado(s):" + h.getNome(),
		    			"Resultado da Consulta", JOptionPane.INFORMATION_MESSAGE);
		    			achei = true;

		    		}// fim do if

                        }// fim do while

		    		if(!achei){
		    			JOptionPane.showMessageDialog(null, "Hotel(is) não encontrado(s)");
		    		}// fim do if
		    	break;

		    default:
		          JOptionPane.showMessageDialog(null, "OPÇÃO INVÁLIDA OU NÃO IMPLEMENTADA!");
		    	
		    }
                   
		    
		   
		  } // fim do pesquisar

				  
//############################### FIM: CANSULTAR #####################################
	
}

3 Respostas

heroijapa

o problema parece estar no while

while (!achei && i.hasNext()){

veja, quando ele acha ele sai do while.

se vc quiser mais de 1, deveria ser

while (i.hasNext()){

acho que isso resolve

ps: o código ta comentadinho, mas ta osso de entender e dar manutenção…

J

vlw cara… já resolveu metade do problema… mas agora ele abre um pop-up mostrando um hotel por vez… eu queria q mostrasse tudo d euma vez só…
eu sei que isso ta acontecendo pq eu coloquei o comando de exibir o hotel dentro do while, mas eu nao sei como que eu faço para tirar ele de lá e exibir um pop-up apenas com a listagem completa dos hoteis disponiveis

diego.sas

Neste caso você pode criar uma StringBuilder e apendar dentro do While.
Quando sair do While voce apresenta o popup com o valor da String:

// ACHAR HOTEL COM PISCINA   
                    StringBuilder result = new StringBuilder();
                   
                    while ( i.hasNext()){   
                                       
                                    Hotel h = (Hotel) i.next();   
  
                                    if (h.getPiscina().equalsIgnoreCase("s")){   
  
                        result.append( "Hotel(is) encontrado(s):" + h.getNome());                                           
                    }// fim do if   
                    JOptionPane.showMessageDialog(null, result.toString(),   
                        "Resultado da Consulta", JOptionPane.INFORMATION_MESSAGE);
Criado 2 de fevereiro de 2011
Ultima resposta 2 de fev. de 2011
Respostas 3
Participantes 3