左右移动数组元素

时间:2016-05-05 12:04:52

标签: java arrays

因此,作为我正在尝试创建的Vector类的一部分,我还希望用户能够将数组中的元素移位'n'个位置,具体取决于什么是指定的。如果用户输入的数字大于数组大小,则元素继续转回到开始和移动。一个例子是:

 1 2 3 4 (shifted 1) => 4 1 2 3

 1 2 3 4 (shifted 4) => 1 2 3 4

 1 2 3 4 (shifted 5) => 4 1 2 3

到目前为止我没有太多代码,除了:

public Vector shifted(int amount) {
  Vector vectorShifted = new Vector(length);

  for (int i = 0; i < length; i++);
    vectorShifted.elements[i] = this.elements[i + amount]
  }
  return vectorShifted;
}

但是,当我运行此程序并输入大于length的数字时,会显示错误。有没有办法修改这个代码,因为可以输入任何数字,正数或负数,并将值移过?

1 个答案:

答案 0 :(得分:0)

就像lazary2所说,你可以使用模运算符%

变化: vectorShifted.elements[i] = this.elements[i + amount]

vectorShifted.elements[i] = this.elements[(i + amount) % length]

如果你想使用Array:

Integer[] array = {0,1,2,3,4}; Collections.rotate(Arrays.asList(array), 3); System.out.println(Arrays.toString(array)); //[2, 3, 4, 0, 1]