Java 将项目向右移动,然后将元素添加到数组中

Java 将项目向右移动,然后将元素添加到数组中,java,Java,我正在努力想办法解决这个问题。我正在处理一个项目,需要将数组中的所有元素向右移动,然后在索引0处添加新元素。我很清楚ArrayList会使这变得更容易,但我想坚持使用普通数组 它应该是什么样子 原件{2,3,4,null} 新的{1,2,3,4) 这是我的最新代码 while (scnr.hasNext()) { for (int i = 0; i < count; i++) { if (scnr.hasNext()) { dat

我正在努力想办法解决这个问题。我正在处理一个项目,需要将数组中的所有元素向右移动,然后在索引0处添加新元素。我很清楚ArrayList会使这变得更容易,但我想坚持使用普通数组

它应该是什么样子

原件{2,3,4,null}

新的{1,2,3,4)

这是我的最新代码

while (scnr.hasNext()) {
        for (int i = 0; i < count; i++) {
          if (scnr.hasNext()) {
            data[i + 1] = data[i]; 
          }
        }
        data[0] = scnr.next();
        count++;
      }
      scnr.close();
while(scnr.hasNext()){
for(int i=0;i
我的问题是我可以添加前2个元素,但第二个元素之后的元素都是相同的,即{2,3,3}而不是{1,2,3,4}


注意:我之所以使用count,是因为有许多空值我不想添加,也不想将它们添加到运行时复杂性中。

正如karakfa所评论的,看起来在数组中移动的方式是从左到右,这意味着移动的第一个元素是成功的,但是之后的所有元素都是相同的

这样想:

index  : 0 |  1|  2|...
element: 2 |  3|  4|...
如果从索引0开始,则覆盖索引1,因此新数组为:

index  : 0 |  1|  2|...
element: 2 |  2|  4|...
如果您尝试将上一个值(3)复制到下一个索引,当它查找该3时,它将找到一个2,因为您已经重写了3


相反的方式会工作得更好。基本上你想改变你访问数组的方向。< /P>这是一个重复的操作吗?如果是这样,也许你想考虑使用链表来代替?或者如果数组是必须的,使用ARARYList,它已经为你的方便实现了这一点。你应该从结尾开始移动项目。提示:我们。方法来“移动”现有值。