2013-03-25 61 views
13

Tôi đang cố chuyển đổi String[][] thành chuỗi để hiển thị trong GUI. Dưới đây là mã của tôi:chuyển đổi mảng hai chiều thành chuỗi

String[][] tableBornes = SearchPropertiesPlugin.FillBornesTable(); 
String table = tableBornes.toString(); 

Đây là những gì nó tạo ra:

[[Ljava.lang.String;@19b8858

Làm thế nào tôi có thể nhận được một cái gì đó dễ đọc hơn?

+4

Bạn đang nhận được tham chiếu của mảng. Bạn nên lặp qua tất cả các phần tử ở đó và nối chúng lại để có được kết quả mong muốn. –

Trả lời

12

Nếu bạn muốn tạo biểu diễn một dòng của mảng, bạn có thể sử dụng Arrays.deepToString.


Trong trường hợp bạn muốn tạo dòng đa đại diện có thể bạn sẽ cần để lặp qua tất cả các hàng và thêm kết quả của Array.toString(array[row]) như

String[][] array = { { "a", "b" }, { "c" } }; 

String lineSeparator = System.lineSeparator(); 
StringBuilder sb = new StringBuilder(); 

for (String[] row : array) { 
    sb.append(Arrays.toString(row)) 
     .append(lineSeparator); 
} 

String result = sb.toString(); 

Kể từ Java 8 thậm chí bạn có thể sử dụng StringJoiner với sẽ tự động thêm delimiter cho bạn:

StringJoiner sj = new StringJoiner(System.lineSeparator()); 
for (String[] row : array) { 
    sj.add(Arrays.toString(row)); 
} 
String result = sj.toString(); 

hoặc sử dụng dòng

012.
String result = Arrays 
     .stream(array) 
     .map(Arrays::toString) 
     .collect(Collectors.joining(System.lineSeparator())); 
3

Hãy thử Arrays.toString(Object[] a)

for(String[] a : tableBornes) 
     System.out.println(Arrays.toString(a)); 

Đoạn mã trên sẽ in tất cả các mảng trong hai chiều mảng tableBornes trong dòng mới.

+0

@LuiggiMendoza: cập nhật câu trả lời :) – Parth

15

thử một phiên bản dòng

Arrays.deepToString(tableBornes); 

hoặc multiline phiên bản

StringBuilder sb = new StringBuilder(); 
for(String[] s1 : tableBornes){ 
    sb.append(Arrays.toString(s2)).append('\n'); 
} 
String s = sb.toString(); 
+0

thnks, tôi đã thử điều này, nhưng tôi cũng muốn trả lại hàng, để in từng danh sách trong một dòng? làm như thế nào? –

3

Làm thế nào về điều này:

StringBuilder sb = new StringBuilder(); 
for(String[] s1 : tableBornes){ 
    for(String s2 : s1){ 
     sb.append(s2); 
    } 
} 
String table = sb.toString(); 

Nếu bạn muốn chèn khoảng trắng hoặc một số nhân vật khác giữa các mục chỉ thêm một cuộc gọi khác append trong vòng lặp bên trong.

+0

vâng tôi muốn thêm không gian và cũng quay lại dòng để có mô hình của bảng. đang tự hỏi liệu có cách nào để in bảng trực tiếp vì tôi có mô hình không? –

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