2013-03-20 14 views
7

args contructorを呼び出して配列を作成する方法は?""で初期化されたStringBuilderの配列を作成する方法は?

StringBuilder[] sb=new StringBuilder[100]; 

しかし、sb [0]をチェックすると、nullになります。私はsb [0]〜sb [99]を ""で初期化します。エラーで

次の結果:

StringBuilder[] sb=new StringBuilder[100](""); 

EDIT: または私はこれをしなければならない。

for(StringBuilder it:sb) 
{ 
    it=new StringBuilder(""); 
} 
+5

ループを書く必要があります。 – NPE

+1

または単に楽しみのために: 'StringBuilder [] sb = new StringBuilder [] {" "、" ".... 100}'; – PermGenError

+1

@TheCrazyProgrammerあなたが行った編集は、配列に反映されない 'it'の値を再割り当てするので、うまくいきません。あなたは何をするべきかを説明する3つのほぼ同じ答えがあります – Edd

答えて

10

すべてのコードでは、100個のStringBuildersの準備ができている配列を初期化します。それは実際にそれを設定しません。

あなたはこれを行うことができます:あなたのためにそれを行う必要があります

StringBuilder[] sb=new StringBuilder[100]; 

for (int i = 0; i < sb.length; i++) { 
    sb[i] = new StringBuilder(""); 
} 

を。

+2

または 'sb [i] = new StringBuilder();' – assylias

+0

@Craig:for-eachを使わない理由を知りました。 – TheCrazyProgrammer

+0

@all:コメントを削除する人がたくさんいます。 D – TheCrazyProgrammer

2

それは常にnullになります。 ""が必要な場合は、手動で初期化する必要があります。

値がnullの場合、""を返すメソッドで配列にアクセスできます。

+0

それ以上は働かない... – assylias

+0

これは動作しません... javaは参照によって効果的に渡されます – Edd

+0

あなたは正しいです。 – Kai

1
StringBuilder[] sb = new StringBuilder[100]; 
for(int i=0;i<100;i++) { 
    sb[i] = new StringBuilder(""); 
} 
+0

@Andreas_D。あなたのコメントの後に答えが修正されたのですか、これは元の答えですか?元の場合は、なぜそれはコンパイルされませんでしたか? –

+0

@RohitJain答えを修正しました。私はオブジェクトを作成するのを忘れました。 –

+0

Rohit、コメントは修正前*です。 *今はコンパイルされます。 –

1

それらが設定されていない限り、任意の配列のすべての値が...あなたは手動で

StringBuilder[] sb=new StringBuilder[100]; 
for(int i=0; i<sb.length; i++) { 
    sb[i]=new StringBuilder(); 
} 

か...

StringBuilder[] sb=new StringBuilder[]{new StringBuilder(), new StringBuilder(), etc} 

をそれぞれの値を初期化するnull必要がある(私が最初にお勧めします多くのエントリを持つ配列のメソッド)

関連する問題