java - 更改数组
好吧,假设我有这个数组:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
说明:在处理数组
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
:Explanation: When dealing with an array
a[]
,a[n]
references the (n+1)th element (keeping in mind the first element isa[0]
.A multidimensional array is just an array of arrays. So if you have a 2D array
b[][]
, thenb[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, andboard[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 with21
:当您声明一个像 int[][] 这样的数组时,您使用两个索引来标识二维数组中的单个值。
当初始化时,
第一个索引选择一个嵌套数组。示例中为 (0、1 或 2)。然后,第二个索引从上面的嵌套数组 a、b、c、d...中选择一个项目。
索引始终从 0 开始:myarray[0][0] 给出存储在数组 0 位置 a 中的值。 myarray[1][3] 给出嵌套数组 1 中的值“d”。
在您的示例中,数字 72 位于第 8 个数组中的第二个位置,使用自然数计数(从 1 开始)。但由于索引是从 0 开始的,所以这变成了索引 [7][1]。这就是答案。
When you declare an array like int[][], you use two indexes to identify a single value in the two-dimensional array.
When initialized like
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.