将数组向右移动一格
来源:爱站网时间:2021-09-16编辑:网友分享
这可能已经回答了,但是我已经寻找了一段时间,这就是所有解决方案都说的。如果已经回答过,请重定向到正确的线程。这个概念很简单。...
问题描述
这可能已经回答了,但是我已经寻找了一段时间,这就是所有解决方案都说的。如果已经回答过,请重定向到正确的线程。
这个概念很简单。我需要将数组的每个元素向右移一位。这必须从用户提供的索引中完成。这是应该发生的事情:
预期输出{0,1,2,3}-> add(4(element),1(location))-> {0,4,1,2,3}
但是,当测试我的代码时,我得到了这样的结果:
实际结果{0,1,2,3}-> add(4,1)-> {0,4,1,1,1}
这是我的代码:
private void shiftRight(int index)
{
assert !isFull();
for(int i = index; i
我觉得我非常接近解决这个问题。就像我认为没有什么大问题,但我似乎找不到它。
思路:
当您要向右移动元素时,由于会覆盖下一个数组点的值,因此无法从左向右浏览数组。我还注意到您写了“ i 首先,由于要使用原始类型,因此请确保数组有足够的空间(您将需要1个以上的空间)。 示例: 现在,您必须将值向右移动,以防止覆盖我们从右到左的下一个值(取决于您使用的是同一数组还是不同的数组)。 然后在您预留的额外位置可以设置新值: 最后但并非最不重要的是,您将必须填写以前的元素。int[] array = new int[prevValue+1];
for (int i = array.length-1; i >= startPos; i--) {
elements[i+1] = array[i];
}
elements[startPos-1]=value;
for (int i = 0; i