2015-09-12 77 views
0

因此,我創建了一個拼圖遊戲,並將每個拼貼保存爲一個int數組。我用2d對象數組表示板,然後使用對象輸出流將2d對象數組保存到文件中。我可以得到對象數組的值,但不能存儲在它的int數組中。我需要存儲在整數數組中的整數。從2d對象數組中獲取int數組

public Start() 
{ 
    Object[][] tileBoard = WorldIO.loadWorld("A player named file"); 
    int[] singleTile = tileBoard[0][0]; //the error 
} 

它問我是否要將它轉換爲int [],但仍然無效。

+4

什麼是'p'? 'WorldIO.loadWorld()'返回什麼? – ddsnowboard

+3

如果你想讓它成爲一個int數組,你爲什麼要把它當作一個'Object'數組? – Andreas

+0

對不起,p應該是tileBoard和WorldIO.loadWorld()返回從文件中讀取的對象數組 – argh

回答

0

由於您的代碼,我假設我們正在處理整數,tileBoard是整數的二維數組。

當你寫tileBoard [0] [0],則返回類型爲整數和您要的是整型保存爲一個整數陣列,因此類型不匹配。例如,嘗試執行int [] array = 5,您將收到錯誤消息。

  • 如果你想要做的是保存在tileBoard是一個整數[0] [0]數組中,所有你需要做的就是int [] singleTile = {tileBoard[0][0]};通過添加大括號,你現在保存一個整數在一個整數數組中。

  • 如果你想要做的是從2D數組中提取整個數組並將該數組保存到singleTile對象中,則應該使用for循環。

這裏是你可以做什麼

int lengthOfRow = tileBoard[0].length;//Getting the length of the row at row 0 
int [] singleTile = new int[lengthOfRow]//Defining length of your new array 
for(int i = 0; i < lengthOfRow; i++){ 
    int add = tileBoard[0][i]; 
    singleTile[i] = add;//Adding the elements to your single array 
} 

如果你覺得一個二維數組與行和列的網格,你可以做的就是選擇一排,並通過它使用了移動循環(使用筆和紙將幫助您可視化)。由於您的新陣列將與您的2D陣列中的行相同,因此它們必須具有相同的長度。首先你必須得到這個長度並相應地啓動你的新陣列。然後循環遍歷列,int add首先在tileBoard [0] [0],然後是tileBoard [0] [1],然後是tileBoard [0] [2],直到該行中沒有更多元素。