Bom dia pessoal, estou iniciando em java e resolvi criar um array para armazenar alguns dados, é um exercicio da faculdade, mas não estou conseguindo, não sei se tem que declarar o array dentro do método ou no atributo, segue como fiz:
publicclassHospedagem{/** * @const int QTD_QUARTOS */finalintQTD_QUARTOS=20;//Constantecomaquantidadedequartosdisponiveisnohotel/** * int Array quartos * * Numero do quarto hospedado, esse valor sera usado com a chave associativa nos outros arrays * Ex: * quartos[12] = 20 * nome[12] = André * idade[12] = 22 */publicintquarto[]=newint[ QTD_QUARTOS ];/** * int Array idade * * Idade do hospede */publicintidade[]=newint[ QTD_QUARTOS ];/** * String Array nome * * Nome do hospede */publicStringnome[]=newString[ QTD_QUARTOS ];/** * setHospede * cadastra o hospede no hotel * * @param name string = nome hospede * @param age int = idade hospede * @param number int = numero do quarto, e que sera usado com chave associativa */publicvoidsetHospede(Stringname,intage,intnumber){quarto[number]=1;//Quartoocupadonome[number]=name;//Nomedohospedeidade[number]=age;//Idadedohospede}}
E para chamar o método setHospede eu faço assim:
// O nome/idade e quarto eu recebo através do Scanner.hospede.setHospede(nome,idade,quarto);
A diferença é bem simples:
Quase tudo criado dentro de um método só dura enqnto o estiver ativo. NA questão de objetos ele pode continuar a existir mesmo com o fim do método, por que alguem ainda pode estar referenciando ele.
Via de regra, atributos de classes são propriedades do objeto, e existirão enqnto objeto existir, pq é sua propriedade.
E o dos métodos só no seu contexto.
Olá pessoal, obrigado pela ajuda, mas então o que sera que pode acontecer? Porque assim, o objeto hospede fica instanciado até o final do programa, eu tenho um menu:
"O array deve ser do tipo de dado e não do nome do atributo .."
Não necessariamente seu racicionio esta certo somente na hora de aplicar esta tendo dificuldades
QTD de Quartos deverias ser um atributo de uma Class Quarto ai voce armazenaria Objetos no seu vetor
por exemplo.
publicclassVetorQuartos{privateQuartos[]vet=newQuarto[20];//inicializa o vet com 20 posiçõesprivateintqtdeQuartos=0;// Variavel local para contar a posição que deve ser alocada no vet/*Aqui voce vai Passar o Objeto Criado por um Construtor por exemplo da Classe Quarto , la na sua Main , aondeno seu vetor vai estar armazenado todas as informações do seu quarto , modelo , luxo max,prime , qt Quartos , sei laoque voce quiser , depois é só extrair estes dados do Vetor*/publicvoidadicionarQuarto(Quartoq){vet[qtdeQuartos]=q;qtdeQuartos++;}
tente assim , qualquer coisa estamos ai
mausexdd
Dica , tente separar o seu projeto
crie a Classe Cliente e seus respectivos atributos,
a Classe Quartos e seus respectivos atributos,
e poderia ter tbm uma classe funcionario para cadastrar quartos e clientes.
separe e crie vetores para cada classe
vetCliente,Quartos<Funcio, aonde voce armazenara dados dos “objetos” instancias das respectivas Classes.
assim fica muito mais facil voce chamar os construtores na Main e realizar as operações .
tente assim e poste seu codigo , !
andrewd
Obrigado pessoal, pela ajuda, vou tentar fazer aqui, com relação a separar meu projeto eu percebi que como você disse vai ser + fácil e pratico de usar, só que no momento nao vou poder fazer essa separação, pois tenho até as 17hrs para enviar esse código pro meu professor :(:(:(:(
Vou tentar fazer e posto o codigo, obrigado e até mais xD
=========== Edit:
Vou separar em 3 classes, uma para armazenar os quartos ocupados/vazios, uma para gerenciar os clientes, e uma outra para exibir as funcoes dos funcionarios, vou atrasar para enviar o trabalho, mas vou tentar enviar da forma correta.