从2d对象数组中获取int数组

时间:2015-09-12 19:13:20

标签: java arrays multidimensional-array

所以我正在创建一个平铺游戏,我将每个平铺保存为一个int数组。我用2d对象数组表示板,然后使用对象输出流将2d对象数组保存到文件中。

我可以获取对象数组的值,但不能获取存储在其中的int数组。我需要存储在整数数组中的整数。

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

它问我是否要将它转换为int [],但这仍然无效。

1 个答案:

答案 0 :(得分:0)

由于您的代码,我假设我们正在处理整数,而tileBoard是一个整数的2D数组。

当你编写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数组视为具有行和列的网格,您可以做的是选择一行并使用for循环移动它(使用笔和纸将帮助您可视化它)。由于新数组与2D数组中的行相同,因此它们必须具有相同的长度。首先,您必须获得该长度并相应地启动新阵列。然后你遍历列,int add首先在tileBoard [0] [0]然后是tileBoard [0] [1]然后是tileBoard [0] [2],直到该行中没有更多元素。