好吧,假设我有这个数组:
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);
但是……假设我想将 map 1 数组(数组左下角)上的数字 72 更改为数字……21。你能做到吗?
最佳答案
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 赋给它。
旁白:有时(通常,甚至)您在编写代码时并不知道要使用哪些索引(假设您希望对所有 map 通用)。此代码将找到 所有 处 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;
}
}
}
关于java - 改变数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3246539/