好吧,假设我有这个阵列:
public int[][] loadBoard(int map) {
if (map == 1) { return new int[][] {
{2,2,24,24,24,24,24,1,3,0,0,0,1 }, {
2,2,24,23,23,23,24,1,3,0,0,0,1 }, {
1,1,24,23,23,23,24,1,3,3,3,3,1 }, {
1,1,24,24,23,24,24,1,1,1,1,3,1 }, {
1,1,1,1,7,1,1,1,1,1,1,3,1 }, {
6,1,1,1,7,7,7,7,7,1,1,1,1 }, {
6,3,3,1,3,3,3,1,7,7,7,3,1 }, {
6,72,3,3,3,1,1,1,1,7,7,1,1 }, {
3,3,3,3,1,1,1,1,1,1,7,1,1 } }; } }
return board;
我可以称之为:
board = loadBoard(1);
但是......假设我想将地图1数组(数组左下角)的数字72更改为数字... 21.你能这样做吗?
答案 0 :(得分:9)
board[7][1] = 21;
说明:处理数组a[]
时,a[n]
引用第(n + 1)个元素(请记住第一个元素是a[0]
多维数组只是一个数组数组。因此,如果你有一个2D数组b[][]
,那么b[n]
引用第(n + 1)个数组。
您的值72位于第8个数组(索引7),位于第2个位置(索引1)。因此board[7][1]
引用该值,board[7][1] = 21
为其指定值21。
除了:有时候(通常是偶数)你不知道什么时候编写了你想要使用的索引代码,(比如说你想对所有地图一般这样做)。此代码会找到{em>所有出现的72
,并将其替换为21
:
int numToReplace = 72;
int replacement = 21;
//loop through each nested array
for ( int i = 0; i < board.length; i++ ) {
//loop through each element of the nested array
for ( int j = 0; j < board[i].length; j++ ) {
if ( board[i][j] == numToReplace ) {
board[i][j] = replacement;
}
}
}
答案 1 :(得分:2)
当声明类似int [] []的数组时,使用两个索引来标识二维数组中的单个值。
初始化时如
int[][] myarray = {
{ a,b,c,d,... }, // 0
{ a,b,c,d,... }, // 1
{ a,b,c,d,....} // 2
};
第一个索引选择一个嵌套数组。示例中为(0,1或2)。然后第二个索引从嵌套数组a,b,c,d ......中选择一个项目。
索引始终从0开始:myarray [0] [0]给出存储在数组0中的值,位置a。 myarray [1] [3]从嵌套数组1中给出值'd'。
在您的示例中,数字72位于第8个数组中,第二个位置,使用自然数(从1开始)计数。但是由于索引从0开始,这就成了索引[7] [1]。答案就是这样。
board[7][1] = 72;