【问题标题】:java shift elements in array [duplicate]java移位数组中的元素[重复]
【发布时间】:2014-07-31 23:48:16
【问题描述】:

嘿,我正在尝试将元素向前移动,将数组中的最后一个元素发送到 data[0]。我做了相反的方向,但我似乎无法在这个方向上找到我的错误。

Pos 是用户输入的班次次数 temp 是临时持有人。 数据是数组

if(pos > 0)
{
   do
   {
        temp = data[data.length -1];

        for(int i =0; i < data.length; i++)
        {
           if(i == data.length-1)
           {
              data[0] = temp; 
           }
           else
           {
               data[i+1] = data[i];
           }
        }

        pos--;
   } while(pos > 0);
}

谢谢。

【问题讨论】:

标签: java arrays loops shift


【解决方案1】:

试试这个

    int temp = data[data.length - 1];
    for (int i = data.length - 1; i > 0; i--) {
        data[i] = data[i - 1];
    }
    data[0] = temp;

或者这个

    int temp = data[data.length - 1];
    System.arraycopy(data, 0, data, 1, data.length - 1);
    data[0] = temp;

【讨论】:

  • 你的for不起作用,我也没有大声使用array.copy;
  • 好的,它确实可以满足我的需要,但为什么它是 temp = data.length -1 而不是 data.length?我有 data.length 之前的错误。你能为我解释一下吗?非常感谢!
  • 数组索引从 0 开始,如果我们有 int[] a = {1, 2, 3};然后访问最后一个元素,我们使用 a[2]
【解决方案2】:

一个好主意是使用System.arraycopy。

请参考这个问题Java, Shifting Elements in an Array

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2017-05-13
    • 2015-08-04
    • 1970-01-01
    • 2019-11-23
    相关资源
    最近更新 更多