[英]Moving array elements left and right
因此,作为我要创建的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
的数字时,将显示错误。 有没有一种方法可以修改此代码,因为可以输入任何数字(正数或负数)并在数值之间移动?
就像lazary2所说的那样,您可以使用模运算符%
更改: vectorShifted.elements[i] = this.elements[i + amount]
到vectorShifted.elements[i] = this.elements[(i + amount) % length]
如果要使用数组:
Integer[] array = {0,1,2,3,4}; Collections.rotate(Arrays.asList(array), 3); System.out.println(Arrays.toString(array)); //[2, 3, 4, 0, 1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.