[opgelost] Java: dynamische variabele-namen?

Oeps, het is weer eens zo ver.

In mijn Java app komen een aantal variabelen binnen (via HTML param).

Deze heten var1, var2 var3, var4, etc. (altijd oplopend)

Ik kan ze natuurlijk handmatig definieren in Java, maar ik wil de namen graag ‘berekenen’, dus bijvoorbeeld:

AantalVariabelen = 10;
int LusIndex;

for (LusIndex = 1; LusIndex <= AantalVariabelen ; LusIndex++)
{
// Hieronder moet binnen deze lus de inhoud van de variabelen var1, var2, etc. komen

  System.out.println( "var"+LusIndex);
  }

Maar dat samenvoegen van die variabelenaam (‘var’ + 1 moet de inhoud van ‘var1’ geven),
heb ik nog nooit gedaan, en ik kom er ook niet echt uit.

Kan iemand hier een antwoord op vinden?

Thanks,

Erik

zover ik weet is dat niet mogelijk maar je kunt natuurlijk altijd een array gebruiken; [code:1:fe707a211a] String var[] = new String[10];

            for&#40;int i=0; i&lt;var.length; i++&#41;
            &#123;
                    var&#91;i&#93; = &quot;bla&quot; + String.valueOf&#40;i&#41;;
                    System.out.println&#40;var&#91;i&#93;&#41;;
            &#125;

[/code:1:fe707a211a]
Maar dit is puur Java (geen javascript want daar zou het misschien wel in kunnen)

ps. Gibby Koldenhof familie van je? :wink:

// Redmar

Redmar,

Dank voor je snelle reactie!

Met een Array gaat het niet lukken, maar ik zie wel iets anders in je code staan ‘String.valueOf(i)’.

Ik denk dat ik daarmee aan de gang moet.

Erik

Als ik je goed begrijp...: in ActionScript kun je soortgelijke acties doen met de eval() functie. Ik weet niet of deze ook bestaat in jouw gebruikte taaltje.

Ik kom er vooralsnog niet uit. Ik zal het even uitgebreider uitleggen:

Het probleem is dat de variabelen vanuit de HTML binnenkomen, maar het aantal variabelen kan wisselen, dus bijvoorbeeld:[code:1:e02de42735]
<param name="aantal_vars" value=2>
<param name="var1 value" = "gegevens string 1">
<param name="var2 value" = "gegevens string 2">
[/code:1:e02de42735]
of

[code:1:e02de42735]
<param name="aantal_vars" value=4>
<param name="var1" value = "gegevens string 1">
<param name="var2" value = "gegevens string 2">
<param name="var3" value = "gegevens string 3">
<param name="var4" value = "gegevens string 4">
[/code:1:e02de42735]
Deze variabelen zijn lange strings met in totaal 21 nummers, met spaties gescheiden.
Iedere binnenkomende variabele wordt naar een array geconverteerd.

De bedoeling is dat ik alle binnenkomende variabelen wil opslaan in een twee-dimensionaal array.
Dit array 'GrootArray" krijgt een variabel aantal rijen, maar een vast aantal kolommen (21).

Nu het probleem nog een keer:
Ik weet wel hoeveel <param …> er binnen komen (middels ‘aantal_vars’),
maar nu moet ik nod die variabele namen binnen Java definieren op een dynamische wijze:

[code:1:e02de42735]
for(int i=1; i<= aantal_vars ; i++)
{
String ParameterNaam = ("var" + String.valueOf(i));
String VariabeleNaam = ("var" + String.valueOf(i));

String (DE WAARDE VAN: ‘VariabeleNaam’) = (getParameter(DE WAARDE VAN: ‘ParameterNaam’));
}
[/code:1:e02de42735]

Ik wordt gek hier :oops: :cry: :x

[code:1:a3c7ac9043]int i=0;

while ((a=getParameter("var")+String.valueOf(i++)))!=null)
groteArray[i]=a.split(" ");
[/code:1:a3c7ac9043]

Ik heb m'n ideetje van hierboven even uitgewerkt tot een werkende test (de enige manier om erachter te komen dat er een haakje miste). Te downloaden op [url]www.tammo80.nl/files/paramtest.zip[/url] (mail even voor vragen, m'n ichat is hopeloos vastgelopen).

Tammo, je bent geweldig!!! Hij werkt, ik kan mijn GrootArray prachtig uitlezen! Geen rare fouten meer etc. heerlijk.

Nogmaals, dank hiervoor,

Erik

Nog even de uiteindelijke code: [code:1:66c515f1af] // Thanks to Tammo Jan (macosx.nl) for helping me building the large array: int i=1; String a;

	String grootArray&#91;&#93;&#91;&#93;;
	grootArray = new String&#91;100&#93;&#91;21&#93;;

		while &#40;&#40;a= getParameter&#40;&quot;var_&quot;+String.valueOf&#40;i++&#41;&#41;&#41; != null&#41;
			&#123;
		grootArray&#91;i-2&#93;=a.split&#40;&quot; &quot;&#41;; 
			&#125;[/code:1:66c515f1af]</p>