2013-03-20 53 views
7

Làm thế nào để tạo một mảng bằng cách gọi args contructor?Cách tạo mảng StringBuilder được khởi tạo bằng ""?

StringBuilder[] sb=new StringBuilder[100]; 

Nhưng nếu tôi kiểm tra sb [0] là rỗng. Tôi muốn rằng sb [0] để sb [99] khởi tạo với "".

kết quả sau trong một lỗi:

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

EDIT: Hoặc tôi phải làm điều này:

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

Bạn sẽ phải viết một vòng lặp. – NPE

+1

hoặc chỉ để giải trí: 'StringBuilder [] sb = new StringBuilder [] {" "," ".... 100}'; – PermGenError

+1

@TheCrazyProgrammer Chỉnh sửa bạn đã thực hiện sẽ không hoạt động vì bạn sẽ chỉ định lại giá trị cho 'nó' sẽ không được phản ánh trong mảng. Có 3 câu trả lời gần như giống hệt nhau mà bạn có giải thích phải làm gì – Edd

Trả lời

10

Tất cả mã của bạn sẽ làm là khởi tạo một mảng sẵn sàng cho 100 StringBuilder. Nó sẽ không thực sự phổ biến nó.

Bạn có thể làm điều này:

StringBuilder[] sb=new StringBuilder[100]; 

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

Điều đó sẽ làm điều đó cho bạn.

+2

hoặc 'sb [i] = new StringBuilder();' – assylias

+0

@Craig: Tôi có lý do tại sao không sử dụng cho mỗi. – TheCrazyProgrammer

+0

@all: Rất nhiều người ở đây đang xóa nhận xét của họ. Một khi họ nhận ra rằng họ là sai: D – TheCrazyProgrammer

2

Nó sẽ luôn luôn được null. Bạn phải khởi tạo thủ công nếu bạn muốn "" trong đó.

Thay vào đó bạn có thể truy cập mảng theo phương thức trả về "" nếu giá trị là null.

+0

Điều đó không làm việc nữa ... – assylias

+0

điều này sẽ không hoạt động ... java có hiệu quả vượt qua tham chiếu – Edd

+0

argh .. bạn nói đúng. – Kai

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

@Andreas_D. Câu trả lời có được sửa đổi sau bình luận của bạn hay đây là câu trả lời gốc? Nếu ban đầu, thì tại sao nó sẽ không biên dịch? –

+0

@RohitJain Tôi đã sửa đổi câu trả lời. Tôi quên tạo đối tượng. –

+0

Rohit, nhận xét là * trước * chỉnh sửa. * Bây giờ * nó biên dịch. –

1

Tất cả các giá trị trong bất kỳ mảng là null trừ khi chúng được thiết lập ... bạn cần phải khởi tạo mỗi giá trị bằng tay

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

hoặc ...

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

(tôi khuyên bạn nên là người đầu tiên phương pháp cho một mảng có nhiều mục nhập)

Các vấn đề liên quan