java - 更改数组

时间:2010-07-14 13:25:25

标签: java arrays applet

好吧,假设我有这个阵列:

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.你能这样做吗?

2 个答案:

答案 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;