Jump to content

Recommended Posts

Posted

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

Posted

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!

Posted

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.

Posted

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!

Posted

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

Posted

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!

Posted

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

Posted (edited)

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
Posted

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

Posted

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 é?

Posted

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

Posted

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.