2017-12-10 102 views
6

Tôi đã sử dụng mã bên dưới để tạo và điền một mảng, tuy nhiên, khi in mảng, tôi không nhận được kết quả mong đợi khi sử dụng chức năng Arrays.toString().Xuất các phần tử của mảng bằng Arrays.toString()

Thay vì in

newArray: [2, 4, 6] 
newArray: [8, 10, 12] 
etc.. 

nó in

newArray: [[[email protected], [[email protected], [[email protected], [[email protected]] 
newArray: [[[email protected], [[email protected], [[email protected], [[email protected]] 
etc.. 

Mã:

public static void main(String[] args) { 
    int[][] newArray = new int[4][3]; 
    int number = 2; 
    for (int rowCounter = 0; rowCounter < newArray.length; rowCounter++) { 
     for (int colCounter = 0; colCounter < newArray[rowCounter].length; colCounter++) { 
      newArray[rowCounter][colCounter] = number; 
      number += 2; 
     } 
     System.out.println("newArray: " + Arrays.toString(newArray)); 
    } 
} 

Bất kỳ sự giúp đỡ với điều này sẽ được nhiều đánh giá cao.

+0

Ở đây kết quả là địa chỉ của mảng bên trong mảng chứ không phải giá trị thực tế bạn muốn –

Trả lời

12

Bạn có thể sử dụng deepToString thay vì toString:

System.out.println(Arrays.deepToString(newArray)); 
+0

bạn có thể vui lòng cho biết tại sao toString không hoạt động. –

+1

@LalitVerma điều gì xảy ra khi bạn sử dụng 'System.out.println (new int [] {1,2,3});'? –

+1

học được điều gì đó mới thanx –

3

Hãy thử

Arrays.deepToString(newArray) 
2

Với kết quả mà bạn mong muốn, đảm bảo mảng bạn đang tuyên bố là one-dimensional. Bạn đã khai báo một two dimensional array mà bạn không sử dụng đúng cách.
Thay đổi int[][] newArray to int[] newArray

+0

Tôi hiểu ý của bạn là gì. Tuy nhiên, tôi phải rõ ràng hơn, kết quả tôi đã chỉ ra là một đoạn kết quả thực sự. Trong thực tế, có nhiều hàng. Tôi sẽ chỉnh sửa ngay bây giờ. –

2

khi bạn gọi toString(Object[] a) nội bộ, nó sẽ gọi phương thức Object.toString.

(obj == null) ? "null" : obj.toString(); 

Nếu bạn muốn in tất cả các yếu tố sau đó như đã đề cập, bạn phải deepToString thay vì toString method.Internally nó sẽ cho một mảng kiểu đối tượng lặp qua mảng và sẽ chuyển sang chuỗi.

Ví dụ mỗi phần tử mảng trong trường hợp của bạn là mảng int sẽ gọi toString.

if (eClass.isArray()) { 
        if (eClass == int[].class) 
         buf.append(toString((int[]) element)); 
Các vấn đề liên quan