java - 更改数组

发布于 2024-09-09 23:08:54 字数 579 浏览 4 评论 0原文

好吧,假设我有这个数组:

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。可以你这样做吗?

OK let's say I have this array:

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;

and I can call it doing this:

board = loadBoard(1);

But... let's say I want to change the number 72 on map 1 array (bottom-left in the array) to the number... 21. Can you do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怪异←思 2024-09-16 23:08:54
board[7][1] = 21;

说明:在处理数组 a[] 时,a[n] 引用第 (n+1) 个元素(请记住第一个元素是 a[0]

多维数组只是数组的数组。因此,如果您有一个二维数组 b[][],则 b。 [n] 引用第 (n+1) 个数组

您的值 72 位于第 8 个数组(索引 7)中的第二个位置(索引 1)。 board[7][1] 引用该值,并且 board[7][1] = 21 为其分配值 21。

Aside:有时(通常,甚至)您不知道何时编写要使用哪些索引的代码(假设您想对所有地图通用地执行此操作)此代码将找到所有出现的情况。 >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;
      }
   }
}
board[7][1] = 21;

Explanation: When dealing with an array a[], a[n] references the (n+1)th element (keeping in mind the first element is a[0].

A multidimensional array is just an array of arrays. So if you have a 2D array b[][], then b[n] references the (n+1)th array.

Your value 72 is in the 8th array (index 7), at the 2nd position (index 1). Therefore board[7][1] references that value, and board[7][1] = 21 assigns it the value 21.

Aside: Sometimes (usually, even) you don't know when you write the code which indexes you want to work with, (say you want to do it generically for all maps). This code will find all occurrences of 72 and replace them with 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;
      }
   }
}
你的往事 2024-09-16 23:08:54

当您声明一个像 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;

When you declare an array like int[][], you use two indexes to identify a single value in the two-dimensional array.

When initialized like

int[][] myarray   = {
 { a,b,c,d,... },  // 0
 { a,b,c,d,... },  // 1
 { a,b,c,d,....}   // 2
};

The first index selects one of the nested arrays. (0, 1 or 2) in the example. The second index then selects an item from the nested array, a,b,c,d... above.

The indexes always start from 0: myarray[0][0] gives the value stored in array 0, position a. myarray[1][3] gives the value 'd' from nested array 1.

In your example, the number 72 was in the 8th array, second position, counting using natural numbers (from 1). But since indexes start from 0, this becomes index [7][1]. Which is the answer.

board[7][1] = 72;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文