Ir para o conteúdo
kodiak

Array de variáveis

Mensagens Recomendadas

kodiak

Olá pessoal.

Imaginem que tenho a seguinte declaração:

int a001, a002, a003, a004, a005, a006, continua por aqui fora.... a997,a998,a999;

Imaginemos agora que tenho um if que verifica uma condição. Se essa condição for satisfeita, o programa vai extrair os valores de um hasmap e atribui às variáveis a001 a a499. Caso contrário, extrai desse mesmo hashmap os valores e atribui às variáveis de a500 a a999.

Como não quero fazer isto "à unha", gostava de saber se era possível criar dois arrays de variáveis, ou seja, num array tinha as variáveis a001 a a499 e basicamente quando queria extrair os valores, bastava fazer um ciclo que corria as variáveis e depois era atribuído o valor contido no hashmap a cada uma das variáveis. Depois em qualquer parte do programa, poderia utilizar, por exemplo, a variável a001.

Não sei se me fiz entender mas qqr dúvida apitem que tento explicar melhor.

Obrigado,

kodiak

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

De a001 a a499 são 499 variáveis; de a500 a a999 são 500 variáveis :)

O que ganhas em ter as variáceis isoladas em vez dum array

a420 em vez de a[420]

a003 em vez de a[3]

etc?


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kodiak

De a001 a a499 são 499 variáveis; de a500 a a999 são 500 variáveis :)

:)

O que ganhas em ter as variáceis isoladas em vez dum array

a420 em vez de a[420]

a003 em vez de a[3]

etc?

Epá. Agora é que me tramaste.

Apenas utilizei estes nomes "sequenciais" por ser mais simples exemplificar. Se assim fosse, teria claramente vantagem em fazer como disseste.

O problema é que os nomes das variáveis não são sequenciais e não estão por ordem.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Se fosse em C (eu não sei Java), depois de tentar soluções mais práticas e não conseguir, fazia um array de apontadores

int *a[1000];
a[0] = &zero;
a[1] = &um;
...
a[420] = &quatrocentos_e_vinte;
...
a[999] = &novecentos_e_noventa_e_nove;

Depois acualizas à vontade

*a[42] = *a[16] + *a[26]; /* quarenta_e_dois = dezasseis + vinte_e_seis */


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Em Java:

int *a[1000];
a[0] = &zero;
a[1] = &um;
...
a[420] = &quatrocentos_e_vinte;
...
a[999] = &novecentos_e_noventa_e_nove;

int[] a = new int[1000];
a[0] = zero;
a[1] = um;
...
a[420] = quatrocentos_e_vinte;
...
a[999] = novecentos_e_noventa_e_nove;

*a[42] = *a[16] + *a[26]; /* quarenta_e_dois = dezasseis + vinte_e_seis */

a[42] = a[16] + a[26]; /* quarenta_e_dois = dezasseis + vinte_e_seis */


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Em Java:

int[] a = new int[1000];
a[0] = zero;
a[1] = um;
...
a[420] = quatrocentos_e_vinte;
...
a[999] = novecentos_e_noventa_e_nove;

a[42] = a[16] + a[26]; /* quarenta_e_dois = dezasseis + vinte_e_seis */

Tens a certeza? Nao me parece -- mas nao sei Java ;)

Se imprimires a variavel quarenta_e_dois depois da atribuicao vai-te aparecer o valor anterior, nao?

Em C:

dezasseis = 1000;
vinte_e_seis = 26;
quarenta_dois = 0;
*a[42] = *a[16] + *a[26]; /* quarenta_e_dois = dezasseis + vinte_e_seis */
printf("valor: %d\n", quarenta_e_dois); /* imprime 1026 */


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Se não fiz bem, é pq percebi mal o problema que o OP escreveu.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kodiak

Caneco.

Faço eu uma viagem de 3 horas de carro para chegar a casa e ver esta "discussão" :)

Acho que não me expliquei bem.

Imaginem que tenho estas variáveis

int azul, verde, amarelo, vermelho, laranja;

Vamos imaginar que em vez de ter a declaração como coloquei acima, tinha um array assim:

int[] arrayDeVariaveis = {azul, verde, amarelo, vermelho, laranja};

Ou seja, em vez de declarar as variáveis como fiz inicialmente, declarava um array em que cada uma das posições era uma variável. Depois poderia fazer algo como

for(int i = 0; i<arrayDeVariaveis.lenght;i++){

   arrayDeVariaveis[i] = i;
}

System.out.println(verde*amarelo); /*Aqui imprimia 6*/

Desculpa se não consigo explicar melhor.

Obrigado pela ajuda.

kodiak

Editado por kodiak

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Hum... O que parece agora é que o que tu queres é um HashTable ou um HashMap.

Em Java não existem variáveis variáveis. Existe em C e em php, mas n em java.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kodiak

Hum... O que parece agora é que o que tu queres é um HashTable ou um HashMap.

Pois. Também já tinha pensado nisso. Tendo em conta o número de variáveis, devo ver essa hipótese uma vez que provavelmente a performance não será muito alterada...

HashTable ou HashMap?

O Map é mais versátil não é?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

São ambos igualmente versáteis. A diferença é que um é thread-safe e o outro n o é.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kodiak

São ambos igualmente versáteis. A diferença é que um é thread-safe e o outro n o é.

Ok.

Como a sincronização não é um problema vou testar o HashMap.

Obrigado pela ajuda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.