Judy
Judy

Reputation: 1553

Can I change variable name inside a loop in Java

I want to change the variable name with each iteration. Since the number of nodes created is dynamically changing.

I tried using one dimensional array but its returning a null pointer. My code is as follow

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

I am using already built datastructure

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

Is there some other way in java or JSP to change the variable name dynamically inside the loop.

Upvotes: 0

Views: 26909

Answers (5)

Judy
Judy

Reputation: 1553

I not able to initiate GenericTree as array. Later I used just vector to solve the problem.

Upvotes: 1

Sean Patrick Floyd
Sean Patrick Floyd

Reputation: 298818

GenericTreeNode<String> root1[] = null;

This line is equivalent to this one:

GenericTreeNode<String>[] root1 = null;

so you create an array variable and initialize it to null

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

but here you assign a value to the array's index.

This must throw a NullPointerException!!.

Here's how to do it:

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

Upvotes: 3

Beege
Beege

Reputation: 665

No, a variable name can't be changed. Try another method like a 2-dimensional array to create another "variable" as you're iterating.

Upvotes: 1

munificent
munificent

Reputation: 12364

You probably mean to do this:

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

There's no need to "change a variable name".

Upvotes: 2

JB Nizet
JB Nizet

Reputation: 691635

No, you can't change variable names in Java.

You got a NullPointerException when using an array because you tried to put a value in the array, and the array was null. You have to initialize the array, with the right number of elements :

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

Upvotes: 2

Related Questions