因此,作为我正在尝试创建的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
的数字时,会显示错误。有没有办法修改这个代码,因为可以输入任何数字,正数或负数,并将值移过?
答案 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]