tags:

views:

221

answers:

5

What I would like to do is have a loop that names a certain number of variables each time. So sometimes when I run the program, this loop will create say 3 variables a1, a2 & a3 but other times it could name more, e.g. (if this sort of thing were possible):

for(int i=1; i<=n;i++) {
    int ai = i;
}

So in the case (for i=1) the name of the int would be a1 and contains the int 1. This clearly won't work, but I was wondering if there was a way to achieve this effect -- or should I stop hacking and use a different data structure?

Thanks.

Also, this is just an example. I'm using it to create arrays.

+13  A: 

No, this is not possible. Java has no way to construct symbols. However, you can use it to define variable-size arrays. For example:

int[] a = new int[n];
for(int i = 0; i < n; i++) {
    a[i] = i; 
}

Which seems like what you may want.

Nathaniel Flath
+1  A: 

I would just make an array of arrays where the index is equal to the i value.

Soldier.moth
why would the poster need an array of arrays?
Mitch Wheat
The objects that the asker would be putting into the array that you provided in your answer would be an array as described in his question. So are answers are basically the same except I didn't give the code.
Soldier.moth
+1  A: 

Rather than trying to define variables a1, a2, a3, ... you can simply define a fixed size array:

int[] anArray = new int[10];

and refer to a[1], a[2], a[3],...

Mitch Wheat
A: 

I think an array of arrays is what im after actually. thanks for the quick answers.

+2  A: 

Can you use a HashMap?

import java.util.HashMap;
import java.util.Map;


public class test {

    public static void main(String[] args) {

     //Fill your map structure
     Map<String, Integer> theMap = new HashMap<String, Integer>();
     for(int i = 1; i <= 100; i++) {

      theMap.put("a" + i, i);
     }

     //After this you can access to all your values
     System.out.println("a55 value: " + theMap.get("a55"));
    }
}

Program output:

a55 value: 55
SourceRebels