Criar array ? Como faz

9 respostas
andrewd

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:

public class Hospedagem {
    
    /**
     * @const int QTD_QUARTOS 
     */
    final int QTD_QUARTOS = 20; // Constante com a quantidade de quartos disponiveis no hotel
    
    /**
     * 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
     */
    public int quarto[] = new int[ QTD_QUARTOS ];

    /**
     * int Array idade
     * 
     * Idade do hospede
     */
    public int idade[] = new int[ QTD_QUARTOS ];
    /**
     * String Array nome
     * 
     * Nome do hospede
     */
    public String nome[] = new String[ 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
     */
    public void setHospede( String name, int age, int number ) {		
        quarto[number]  = 1; // Quarto ocupado
        nome[number]    = name; // Nome do hospede
        idade[number]   = age; // Idade do hospede
		
    }
}

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);

9 Respostas

Ivan_Alves

Até então não vejo nada de errado!

yoshikichi

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.

ex:

class tal{
private int algo;;// é uma propriedade
void metodo(){
int algo=0; // existe no método.
}
}
andrewd

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:

1 - Cadastrar
2 - Remover
3 - Sair

e no while eu faço assim

do{

// Aqui instancio a classe e deixo um switch para verificar a opção digitada.

} while ( opc != 3);

Não sei o que pode estar errado, mas ele não adiciona os valores no array :(:(:(:frowning:

marcusviniciusbastos
Bom dia, não sei se é isso que você pretende, segue um exemplo. Criei uma classe Hospede.
public class Hospede {
	String nome = "";
	int idade = 0;
	int quarto = 0;

}
Criei um classe de TesteHospede.
public class TesteHospede {

	
	public static void main(String[] args) {
		Hospede h[] = new Hospede[2];
		h[0]= new Hospede();
		h[0].nome = "Nome";
		h[0].idade = 30;
		h[0].quarto = 2;

	}

}
juceliohv

Sinceramente não sei por que não dá erro de compilação, mas a definição dos atributos parece estar incorreta.

ao inves de usar

public int numero[] = new int[QTD_QUARTOS];

use

public int[] numero = new int[QTD_QUARTOS];

O array deve ser do tipo de dado e não do nome do atributo.

blanka

juceliohv:
Sinceramente não sei por que não dá erro de compilação, mas a definição dos atributos parece estar incorreta.

ao inves de usar

public int numero[] = new int[QTD_QUARTOS];

use

public int[] numero = new int[QTD_QUARTOS];

O array deve ser do tipo de dado e não do nome do atributo.

Amigão, o colchete pode vir antes ou dps do nome do array … sem nenhum problema.

mausexdd
juceliohv wrote: Sinceramente não sei por que não dá erro de compilação, mas a definição dos atributos parece estar incorreta.

ao inves de usar

[quote]view plaincopy to clipboardprint?
public int numero[] = new int[QTD_QUARTOS];  
public int numero[] = new int[QTD_QUARTOS]; 

use 

view plaincopy to clipboardprint?
public int[] numero = new int[QTD_QUARTOS];  
public int[] numero = new int[QTD_QUARTOS]; [/quote]
.

"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.

public class VetorQuartos{
	private Quartos[] vet = new Quarto[20];//inicializa o vet com 20 posições
	private int qtdeQuartos = 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 , aonde
no seu vetor vai estar armazenado todas as informações do seu quarto , modelo , luxo  max,prime , qt Quartos , sei la
oque voce quiser , depois é só extrair estes dados do Vetor*/
	
 public void adicionarQuarto (Quarto q) {
		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 :(:(:(:(:frowning:

  • 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.

Criado 14 de junho de 2011
Ultima resposta 14 de jun. de 2011
Respostas 9
Participantes 7