import java.util.Arrays;
/**
* 任意层数的for循环
*/
public class ForTest {
public static void main(String[] args) {
ForTest forTest = new ForTest();
//本例是4层,每层重复2/3/4/5次
forTest.multiLoop(new int[]{2,3,4,5});
}
private void multiLoop(int...args) {
int len = args.length;
//int[] j 表示各级循环目前在第几轮
int[] j = new int[len];
for( ; ; j[len-1]++) {
for(int k=len-1; k>=0; k--) {
if(j[k]==args[k]) {
//当第k+1层循环已到最大值时
if(k==0) {
return;
} else {
j[k]=0;
j[k-1]++;
}
}
}
//最内层循环执行的方法写在这里
System.out.println(Arrays.toString(j));
}
}
}
执行结果:( 共执行2×3×4×5=120次 )
[0, 0, 0, 0]
[0, 0, 0, 1]
[0, 0, 0, 2]
[0, 0, 0, 3]
[0, 0, 0, 4]
[0, 0, 1, 0]
…… ……
[1, 2, 3, 3]
[1, 2, 3, 4]