我想在每次迭代时更改变量名称。由于创建的节点数量正在动态变化。
我尝试使用一维数组,但它返回一个空指针。我的代码如下
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中是否有其他方法可以在循环内动态更改变量名。
答案 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作为数组启动。后来我只使用矢量来解决问题。