Jump to content
kodiak

Array de variáveis

Recommended Posts

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

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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%.

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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%.

Share this post


Link to post
Share on other 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

Edited by kodiak

Share this post


Link to post
Share on other 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%.

Share this post


Link to post
Share on other 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 é?

Share this post


Link to post
Share on other 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%.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.