2011-01-09 2 views
2

Я вышел из своей лиги.

нормально, так что если я могу это сделать:Именование массивов в цикле

int[]teams = new int[3]; 
for (int i = 0; i < 3; i++) 
{ 
teams[i] = i; 
} 

как я сделать нечто подобное, но именования несколько массивов, т.е.

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

Я прочитал, вы не можете назвать массив с поэтому я не могу просто увидеть, как создавать массивы с разными именами (в основном более одного) с использованием цикла.

Благодаря

+5

Просьба уточнить ваш вопрос, поскольку это не имеет смысла (по крайней мере для меня). Что именно вы пытаетесь сделать и почему? И какой язык программирования вы используете? C++ или Java? Они определенно не то же самое. –

+0

жаль, что это не очень понятно, im использует java, и это всего лишь маленький пример, который я собрал вместе. Я в основном пытаюсь создать набор массивов с именами, считанными из списка. – alisdairv

+2

Если вы используете Java, почему вы отметили его как C++? Это почти так, как будто вы хотите получить ответы, которые вам не нужны. –

ответ

1

Вы не можете динамически генерировать переменную имена, но вы можете добиться такого же эффекта с помощью карты:

//Store mappings from array name (String) to int arrays (int[]) 
Map<String, int[]> namedArrays = new HashMap<String, int[]>(); 
for (int i = 0; i < 3; i++) 
{ 
    //This is going to be the name of your new array 
    String arrayName = String.valueOf(i); 
    //Map an new int[] to this name 
    namedArrays.put(arrayName, new int[3]); 
} 

//If you need to access array called "2" do 
int[] array2 = namedArrays.get("2") 

Преимущество doi Таким образом, вы можете иметь несколько массивов с одинаковыми именами, если они находятся на разных картах. Но учтите, что при сопоставлении двух или нескольких массивов с тем же именем на одной карте предыдущий массив будет переопределен (потерян).

3

Вы хотите сделать следующее (Java):

int teams[][] = new teams[3][3] 

Вы бы сделать следующее (C++):

int** teams = new int*[3]; 
for(int i=0; i<3; i++){ 
    teams[i] = new int[3]; 
} 

или вы могли бы просто сделать

int teams[3][3]; 
for(int i=0; i<3; i++){ 
    for(int j=0; j<3; j++){ 
     teams[i][j] = //whatever you want 
    } 
} 

Редактировать в ответ на ваш комментарий ниже:

Что вы ищете, это MultiMap. Там вы собираетесь получить:

MultiMap foo = new MultiMap(); 

foo.put("Bob", 1); 
foo.put("Bob", 2); 

и т.д ...

+0

ах, что было глупо от меня, в конечном итоге имя массива должно быть строкой. поэтому я не могу просто использовать его как индекс для массива 2d ... – alisdairv

+0

Я отредактирую код – alisdairv

+0

@outofmyleague, что вы подразумеваете под «именем массива»? Вы хотите, чтобы вы искали целое число через строку? – wheaties

2

Вы можете создать массив массивов (иногда называемый многомерный массив):

int [][] arr = new int[137][42]; 
+0

, как упоминалось выше, именование из int было только потому, что было легко показать его изменение в нескольких строках кода, в конечном итоге это будет из строки. подумал о том, чтобы поместить все имена в собственный массив строк, а затем indexof(), чтобы получить индекс no ..... – alisdairv