Можно ли назвать переменную, используя переменную в Java? - PullRequest
3 голосов
/ 06 июня 2009

Что я хотел бы сделать, так это создать цикл, в котором каждый раз указывается определенное количество переменных. Поэтому иногда, когда я запускаю программу, этот цикл создает, скажем, 3 переменные a1, a2 и a3, но в других случаях он может называть больше, например, (если бы это было возможно):

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

Так что в случае (for i=1) имя int будет a1 и содержит int 1. Это явно не сработает, но мне было интересно, есть ли способ достичь этого эффекта - или я должен остановиться взломать и использовать другую структуру данных?

Спасибо.

Кроме того, это всего лишь пример. Я использую его для создания массивов.

Ответы [ 4 ]

16 голосов
/ 06 июня 2009

Нет, это невозможно. У Java нет способа конструировать символы. Тем не менее, вы можете использовать его для определения массивов переменного размера. Например:

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

Что похоже на то, что вы можете хотеть.

3 голосов
/ 08 июня 2009

Map

Можете ли вы использовать реализацию Map, такую ​​как 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"));
    }
}

Вывод программы:

a55 value: 55
2 голосов
/ 06 июня 2009

Вместо того, чтобы пытаться определить переменные a1, a2, a3, ... вы можете просто определить массив фиксированного размера:

int[] anArray = new int[10]; 

и ссылаются на [1], a [2], a [3], ...

1 голос
/ 06 июня 2009

Я бы просто сделал массив массивов, где индекс равен значению i.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...