2009-11-09 23 views

Trả lời

16

Thứ nhất, Java về mặt kỹ thuật không có mảng 2 chiều: nó có mảng mảng. Vì vậy, trong Java bạn có thể làm điều này:

String arr[][] = new String[] { 
    new String[3], 
    new String[4], 
    new String[5] 
}; 

Điểm tôi muốn vượt qua là ở trên không phải là hình chữ nhật (như một mảng 2D thực sự).

Vì vậy, mảng mảng của bạn, theo cột, sau đó là hàng hoặc hàng thì cột? Nếu đó là hàng thì các cột thì dễ dàng:

int rows = arr.length; 

(từ ví dụ trên).

Nếu mảng của bạn là cột thì các hàng thì bạn gặp sự cố. Bạn có thể làm điều này:

int rows = arr[0].length; 

nhưng điều này có thể thất bại vì một số lý do:

  1. Các mảng phải kích thước 0 trong trường hợp này bạn sẽ nhận được một ngoại lệ; và
  2. Bạn giả định chiều dài của phần tử mảng đầu tiên là số hàng. Điều này không nhất thiết phải đúng như ví dụ trên.

Mảng là công cụ thô. Nếu bạn muốn có một đối tượng 2D thực sự, tôi khuyên bạn nên tìm hoặc viết một lớp hoạt động đúng cách.

8
Object[][] data = ... 
System.out.println(data.length); // number of rows 
System.out.println(data[0].length); // number of columns in first row 
+0

Bạn gõ nhanh hơn tôi :) – Xailor

+0

should not mà chỉ đơn giản là // số cột ? –

5
int[][] ia = new int[5][6]; 
System.out.println(ia.length); 
System.out.println(ia[0].length); 
1

Nó phụ thuộc những gì bạn có ý nghĩa bởi "bao nhiêu hàng".

Để bắt đầu, mảng 2 chiều thực sự là mảng 1-D mảng 1-D trong Java. Và không có yêu cầu rằng một mảng 2-D thực sự là hình chữ nhật hoặc thậm chí là tất cả các phần tử trong thứ nguyên đầu tiên đều được điền.

  • Nếu bạn muốn tìm số nguyên tố trong thứ nguyên đầu tiên, câu trả lời đơn giản là array.length.

  • Nếu bạn muốn tìm số phần tử trong thứ nguyên thứ hai của mảng 2-D hình chữ nhật, câu trả lời là `mảng [0] .length.

  • Nếu bạn muốn tìm số phần tử trong thứ nguyên thứ hai của mảng 2-D không phải hình chữ nhật hoặc thưa thớt, câu trả lời là không xác định.

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