Могу ли я изменить имя переменной внутри цикла в Java - PullRequest
0 голосов
/ 03 февраля 2011

Я хочу менять имя переменной при каждой итерации. Поскольку количество создаваемых узлов динамически меняется.

Я попытался использовать одномерный массив, но он возвращает нулевой указатель. Мой код следующий:

    GenericTreeNode<String> **root1[]** = null;
    for(int i=0;i<10;i++)
    {
        String str="child"+i;
        System.out.println(str);

        **root1[i]** =new GenericTreeNode<String>(str);
    }

Я использую уже построенную структуру данных

    public class GenericTree<T> {

private GenericTreeNode<T> root;

public GenericTree() {
    super();
}

public GenericTreeNode<T> getRoot() {
    return this.root;
}

public void setRoot(GenericTreeNode<T> root) {
    this.root = root;
}

Есть ли какой-либо другой способ в java или JSP динамически изменять имя переменной внутри цикла.

Ответы [ 5 ]

3 голосов
/ 03 февраля 2011
GenericTreeNode<String> root1[] = null;

Эта строка эквивалентна этой:

GenericTreeNode<String>[] root1 = null;

, поэтому вы создаете переменную массива и инициализируете ее как null

root1[i] =new GenericTreeNode<String>(str);

, но здесь вы присваиваете значениеиндекс массива.

Это должно выдать NullPointerException !!.

Вот как это сделать:

GenericTreeNode<String>[] root1 = new GenericTreeNode<String>[10];
2 голосов
/ 03 февраля 2011

Вы, вероятно, хотите это сделать:

GenericTreeNode<String> root1[] = new GenericTreeNode<String>[10];
for(int i=0;i<10;i++)
{
    String str="child"+i;
    System.out.println(str);

    root1[i] = new GenericTreeNode<String>(str);
}

Нет необходимости «менять имя переменной».

2 голосов
/ 03 февраля 2011

Нет, вы не можете изменять имена переменных в Java.

При использовании массива вы получили исключение NullPointerException, поскольку вы пытались поместить значение в массив, а массив был нулевым.Вы должны инициализировать массив с правильным количеством элементов:

int length = 10;
GenericTreeNode<String>[] root1 = new GenericTreeNode<String>[length];
for (int i = 0; i < length; i++) {
    String str = "child" + i;
    System.out.println(str);

    root1[i] = new GenericTreeNode<String>(str);
}
1 голос
/ 06 февраля 2011

Я не могу инициировать GenericTree как массив. Позже я использовал только вектор для решения проблемы.

1 голос
/ 03 февраля 2011

Нет, имя переменной не может быть изменено. Попробуйте другой метод, например, двумерный массив, чтобы создать другую «переменную» во время итерации.

...