2013-03-20 19 views
7

如何通过调用args构造函数来创建数组?如何创建用“”初始化的StringBuilder数组?

StringBuilder[] sb=new StringBuilder[100]; 

但是,如果我检查sb [0]它是空的。我希望那个sb [0]对某人[99]用“”初始化。

继将导致一个错误:

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

编辑: 还是我必须这样做:

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

你必须写一个循环。 – NPE 2013-03-20 10:17:47

+1

或只是为了好玩:'StringBuilder [] sb = new StringBuilder [] {“”,“”.... 100}'; – PermGenError 2013-03-20 10:18:29

+1

@TheCrazyProgrammer您所做的编辑将不起作用,因为您将重新分配“it”的值,该值不会反映在数组中。有3个几乎相同的答案,你有解释该怎么做 – Edd 2013-03-22 10:28:20

回答

10

你所有的代码都会为100个StringBuilders初始化一个数组。它不会实际填充它。

你可以这样做:

StringBuilder[] sb=new StringBuilder[100]; 

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

这应该为你做它。

+2

或'sb [i] =新的StringBuilder();' – assylias 2013-03-20 10:22:22

+0

@Craig:我明白了为什么不用for-each。 – TheCrazyProgrammer 2013-03-20 10:30:34

+0

@all:很多人在这里删除他们的评论。一旦他们意识到他们错了:D – TheCrazyProgrammer 2013-03-20 10:31:33

2

这将永远是null。如果您需要"",则必须手动初始化它。

相反,如果值为null,则可以通过返回""的方法访问该数组。

+0

这是行不通的... – assylias 2013-03-20 10:24:36

+0

这将无法正常工作... java是有效的传递参考 – Edd 2013-03-20 10:24:38

+0

ARGH ..你是对的。 – Kai 2013-03-20 10:25:52

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

@Andreas_D。你的评论后,答案是否被修改,或者这是最初的答案?如果是原创的,那么为什么它不会编译? – 2013-03-20 10:28:32

+0

@RohitJain我修改了答案。我忘了创建对象。 – 2013-03-20 10:32:08

+0

Rohit,评论是*之前的*更正。 *现在*编译。 – 2013-03-20 10:46:32

1

在任何阵列中的所有值都null,除非它们被设置......你需要初始化每个值手动

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} 

(我建议第一方法为有很多条目的数组)