2012-01-21 26 views
5

Với biên tập Tile của tôi mà tôi đã tạo ra tôi nhận được một mảng như thế này:Initialize Array trong một mảng

int [][] Level02 = new int[][] { 
          { 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12}, 
          { 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12}, 
          { 11, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, 13, -1, -1, -1, -1, 12}, 
          { 11, 13, -1, -1, 27, 27, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, 13, 13, -1, -1, -1, 13, 13, -1, -1, -1, 32, -1, -1, 27, 27, 25, 25, 27, 27, -1, -1, 32, 12}, 
          { 16, 16, 16, 16, 16, 16, 16, 16, 16, -1, -1, 13, 13, -1, -1, -1, 13, -1, -1, -1, 25, 25, 25, -1, -1, -1, 27, 27, 27, 27, -1, -1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, 
          { 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 16, 16, 16, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
          { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
          { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
          { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
          { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} 
         } 

Vì vậy, nó in ra một mảng 2 chiều.

Vấn đề là tôi có hàng trăm các trong một lớp và những gì để sắp xếp chúng để có thể làm như sau: Levels.getlevelCount;

Vì vậy, tôi đã tìm ra rằng tôi có thể làm một mảng 3 chiều: int [][][] AllLevels = new int [][][]

Nhưng câu hỏi của tôi là: có anyway để khai báo một mảng trong một loại như thế này:

int[][][] all = new int[][][]{ 


     int [][] Level01= new int[][] { 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}}; 

int [][] Level02= new int[][] { 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, 
    { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}}; 


     }; 

Trên đang đưa ra một Lỗi Biên soạn.

+0

Cảm ơn Dave! – AndroidXTr3meN

+0

Nếu bạn có loại mảng này, hãy xem xét xóa dữ liệu khỏi mã và khởi tạo các mảng từ tệp/db. Những người sẽ phải mantain mã của bạn sẽ cảm ơn bạn. – SJuan76

+0

Tôi không có bất kỳ tệp nào. Trình soạn thảo của tôi cho tôi điều này. Và tôi không thấy như thế nào nhà thiết kế đồ họa của tôi sẽ quan tâm: D – AndroidXTr3meN

Trả lời

2

Bạn không thể làm chính xác những gì bạn có ở đó nhưng bạn có thể làm điều này.

int [][] twod1 = {{1, 1,}, {-1, -1}}; 

int [][] twod2 = {{1, 1,}, {-1, -1}}; 

int [][][] threed = {twod1, twod2}; 

Hoặc bạn có thể làm ngược lại nếu muốn.

int [][][] threed2 = {{{1, 1,}, {-1, -1}}, 
        {{1, 1,}, {-1, -1}}}; 

int [][] twod3 = threed2[0]; 

int [][] twod4 = threed2[1]; 

Bạn cũng có thể thực hiện nội tuyến, tôi không nghĩ rằng nó rất dễ đọc. Nếu bạn làm điều đó nội tuyến, bạn cũng không thể sử dụng khởi tạo ngắn tay, bạn thực sự phải khai báo new int[][] cho mỗi mảng int 2 chiều.

int [][] twod5; 

int [][] twod6; 

int [][][] threed3 = { twod5 = new int[][]{{1, 1,}, {-1, -1}}, 
         twod6 = new int[][]{ {1, 1,}, {-1, -1}}}; 
+0

Tuyệt vời! Nhưng họ là bất cứ ai thay thế {twod1, twod2}; với thực sự khởi tạo? – AndroidXTr3meN

+0

@ AndroidXtr3meN Tôi đã cập nhật câu trả lời của mình với kịch bản ngược lại gần hơn với những gì bạn cần? – Dev

+0

Cảm ơn bạn !! 10 ký tự – AndroidXTr3meN

2
int[][][] all = ..... 

int[][] level1 = all[0]; 
int[][] level2 = all[1]; 
2

Tất nhiên, đây là một ví dụ 2D:

int[] level1, level2; 
int[][] all = new int[][] { 
    level1 = new int[]{ 1, 2 }, 
    level2 = new int[]{ 3, 4 } 
}; 

Vì vậy, đầu tiên chúng ta khai báo các biến cho mỗi cấp level1level2. Tôi giả sử bạn muốn tham khảo để họ đánh giá từ ví dụ của bạn. Nếu không, thì bạn có thể bỏ chúng ra. Vì vậy, mảng đa chiều chỉ là một mảng các mảng của mảng ... Vì vậy, bạn có thể đơn giản khởi tạo từng phần tử của mảng cấp cao một cách riêng biệt.

Sau đó, thông báo rằng toán tử gán = thực sự trả về một giá trị, giá trị của nhiệm vụ.

+0

Vâng, tôi có nghĩa là khai báo một mảng 2 chiều trong một thứ ba. Một từ khác nhiều hơn bạn hiển thị – AndroidXTr3meN

+0

Bạn đang thiếu một thứ nguyên. –

+0

Ý tưởng là như nhau. Tôi vừa làm một ví dụ 2D để minh họa cho khái niệm được sử dụng. – tskuzzy

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