2011-02-03 22 views
0

各繰り返しで変数名を変更したいと思います。作成されるノードの数が動的に変化するためです。Javaのループ内で変数名を変更することはできます

1次元配列を使用しようとしましたが、nullポインタが返されました。ループ内で動的に変数名を変更するには、JavaやJSPで他のいくつかの方法があります私はすでに構築されたデータ構造

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

を使用しています

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

に従うように私のコードです。

+2

私は変数名の変更が良いアイデアであるとは思っていません。 –

+0

もちろん、それはヌルポインタです!あなたは 'root1 [] = null;とは何と思いますか?とにかく、不可能ではなく、 "反復ごとに変数名を変更する"というのは意味がありません。あなたは何をしようとしているのかを教えてください。 –

+0

できません。あなたの本当の問題は何ですか? – birryree

答えて

3
GenericTreeNode<String> root1[] = null; 

この行はこの1つに相当しますので、あなたは配列変数を作成し、

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

をゼロに初期化する

GenericTreeNode<String>[] root1 = null; 

が、ここであなたは、配列のインデックスに値を割り当てます。

これはNullPointerException !!を投げる必要があります。ここで

はそれを行う方法は次のとおりです。

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

いいえ、あなたはJavaで変数名を変更することはできません。

配列に値を入力しようとしたために配列を使用していて、配列がnullだったため、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); 
} 
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); 
} 

「変数名を変更」する必要はありません。

1

いいえ、変数名は変更できません。 2次元配列のような別のメソッドを試して、反復処理中に別の "変数"を作成してください。

1

ArrayとしてGenericTreeを開始できません。後で私は問題を解決するためにベクトルを使用しました。

関連する問題