我可以在Java中更改循环内的变量名称吗?

时间:2011-02-03 16:23:46

标签: java variables dynamic-data dynamic

我想在每次迭代时更改变量名称。由于创建的节点数量正在动态变化。

我尝试使用一维数组,但它返回一个空指针。我的代码如下

    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 个答案:

答案 0 :(得分:3)

GenericTreeNode<String> root1[] = null;

这一行等同于这一行:

GenericTreeNode<String>[] root1 = null;

所以你创建一个数组变量并将其初始化为null

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

但是在这里你为数组的索引赋值。

这必须抛出NullPointerException !!。

以下是如何操作:

GenericTreeNode<String>[] root1 = new GenericTreeNode<String>[10];

答案 1 :(得分:2)

不,您无法在Java中更改变量名称。

使用数组时出现NullPointerException,因为您试图在数组中放入一个值,并且该数组为null。您必须使用正确数量的元素初始化数组:

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);
}

答案 2 :(得分:2)

你可能意味着这样做:

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);
}

无需“更改变量名称”。

答案 3 :(得分:1)

不,不能更改变量名称。尝试使用另一种方法,如二维数组,在迭代时创建另一个“变量”。

答案 4 :(得分:1)

我无法将GenericTree作为数组启动。后来我只使用矢量来解决问题。