【问题标题】:Can I change variable name inside a loop in Java我可以在Java的循环中更改变量名吗
【发布时间】:2011-06-20 19:06:28
【问题描述】:

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

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

    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 中是否有其他方法可以在循环内动态更改变量名。

【问题讨论】:

  • 我从来没有见过改变变量名是个好主意的时候,我也不认为这是可能的,更不用说在 Java 中了。
  • 当然是空指针!你认为root1[] = null; 做了什么?无论如何,除了不可能之外,“每次迭代都更改变量名”是没有意义的。你应该告诉我们你想做什么。
  • 你做不到。你真正的问题是什么?

标签: java variables dynamic-data dynamic


【解决方案1】:
GenericTreeNode<String> root1[] = null;

这一行等价于这一行:

GenericTreeNode<String>[] root1 = null;

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

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

但是在这里你为数组的索引分配一个值。

这必须抛出一个NullPointerException!!。

这是怎么做的:

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

【讨论】:

    【解决方案2】:

    不,您不能在 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);
    }
    

    【讨论】:

      【解决方案3】:

      你可能是想这样做:

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

      无需“更改变量名”。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          我无法将 GenericTree 作为数组启动。后来我只用vector解决了这个问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-02-05
            • 2021-12-03
            • 2015-10-01
            • 2017-08-05
            • 2016-03-10
            • 2016-06-02
            • 2018-01-20
            相关资源
            最近更新 更多