当时看一个题想做一下,本来看起来是很简单的,觉得一个for就能解决的问题(当然肯定是能做出来的),最后的教训就是这种题下次记得用两个for。
package test;
import java.util.Arrays;
//数组的旋转
public class Rotate {
//将数组前n个数旋转到末尾,主要理解循环的位置和次数,
//这里使用了两个for,使用一个for需要进行i和n大小的判定,比较繁琐
public void arrRotate(int n) {
int [] a = {5,6,7,1,2,3,4};
int [] b = new int[7];
int length = a.length;
for (int i = 0; i< length-n; i++) { //先把后面的补位到前面
b[i] = a[i+n];
}
for (int i = length-n; i< length; i++) { //空位从a[0]开始补齐到b[n-1]
b[i] = a[i-length+n];
}
System.out.println(Arrays.toString(b));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Rotate a1 = new Rotate();
a1.arrRotate(3);
}
}
[1, 2, 3, 4, 5, 6, 7]