我目前正在进行一个项目,旨在提高我对Java的理解。我的项目的一部分是使用数组,并能够将位置向下移动1以便在特定位置插入另一个元素。例如,按字母顺序排列的名称...如果我想将元素放置在数组的中间,则应将位置移动-1。
我一直在环顾四周,实际上发现我认为可能是StackOverflow的解决方案。尽管海报实际上并未提供正在发生的事情的完整细节。我希望有人可以向我解释。因为我不想使用我还没有完全理解的东西。
这是一个问题:
我进行了不错的搜索,无法找到向下移动数组的工作代码。我希望做的是将值存储在数组的最后一个位置,替换最后一个位置,然后将array [20]移到array [19]。这是为了计算玩家的最后20步动作,但我在实际存储时遇到了麻烦。这就是我试图做的
//an int moveArray[20] previously stated and instantiated
int temp1, temp2;
for (int i = moveArray.length - 1; i > 0; i--)
{
temp1 = moveArray[i - 1];
temp2 = moveArray[i - 2];
moveArray[i - 1] = moveArray[i];
temp1 = temp2;
}
moveArray[moveArray.length - 1] = intoWalk;
任何建议或解决方案都将真正帮助您,谢谢
这是解决方案:
for(int i=0;i<moveArray.length-1;i++){
moveArray[i] = moveArray[i+1];
}
moveArray[moveArray.length - 1] = intoWalk;
如果有人可以为我解释解决方案,请逐步进行,我将非常感激
最佳答案
假设您有以下字符串数组(我正在使用字符串
因为我认为它们会更容易遵循,但原理相同
适用):
String[] moveArray = new String[] {"A", "B", "C", "D", "E"};
假设您要删除
"A"
并将剩余的字符串向左移动乘以1,这样您就可以在末尾添加“ F”。
String intoWalk = "F";
for (int i = 0; i < moveArray.length - 1; i++) {
moveArray[i] = moveArray[i + 1];
}
moveArray[moveArray.length - 1] = intoWalk;
这将导致
moveArray
包含{"B", "C", "D", "E", "F"}
。现在让我们检查循环的设置:
for (int i = 0; i < moveArray.length - 1; i++)
在
i
(开头)处启动索引变量0
。在
i < moveArray.length - 1
时继续进行迭代。这意味着迭代从
"A"
(索引0
)到"D"
(索引3
,因为moveArray.length - 1
是
5 - 1
,即4
)。每次迭代后,将
i
增加1
。每次迭代:
moveArray[i] = moveArray[i + 1];
迭代
i == 0
:moveArray
是{"A", "B", "C", "D", "E"}
。将
moveArray[0]
设置为moveArray[1]
。现在
moveArray
是{"B", "B", "C", "D", "E"}
。将
i
从0
递增到1
。i == 1
小于4
。迭代
i == 1
:moveArray
是{"B", "B", "C", "D", "E"}
。将
moveArray[1]
设置为moveArray[2]
。现在
moveArray
是{"B", "C", "C", "D", "E"}
。将
i
从1
递增到2
。i == 2
仍然小于4
。迭代
i == 2
:moveArray
是{"B", "C", "C", "D", "E"}
。将
moveArray[2]
设置为moveArray[3]
。现在
moveArray
是{"B", "C", "D", "D", "E"}
。将
i
从2
递增到3
。i == 3
仍然小于4
。迭代
i == 3
:moveArray
是{"B", "C", "D", "D", "E"}
。将
moveArray[3]
设置为moveArray[4]
。现在
moveArray
是{"B", "C", "D", "E", "E"}
。将
i
从3
递增到4
。i == 4
现在是4
,请停止循环。循环后的赋值:
moveArray[moveArray.length - 1] = intoWalk;
将最后一个索引
4
设置为intoWalk
,即"F"
。现在
moveArray
是{"B", "C", "D", "E", "F"}
。这就是解决方案所描述的。