需要用java解决图片所述的问题。请大佬帮忙。
public class Test {
public static void main(String[] args) {
int[] a = new int[28];
for(int i=0;i<28;i++){
a[i] = i+1;
}
//通过循环左移达到最后的效果
for(int i=7;i>1;i--){
for(int j=3;j>=1;j--){
zy(a,i*j-1,4*i+j-5);
}
}
for(int i=0;i<=27;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
/**
* 对bg到ed这段数组进行左移一位,bg移到ed
* @param a
* @param bg
* @param ed
*/
public static void zy(int[] a, int bg, int ed){
int temp = a[bg];
for(int i=bg;i<=ed;i++){
a[i] = a[i+1];
}
a[ed] = temp;
}
}
双层for循环
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList();
for(int i=0;i<28;i++){
list.add(i+1);//构造需要的数组
}
List<List<Integer>> list1 = new ArrayList();
for(int i=0;i<7;i++){ //分7组
List<Integer> list2 = new ArrayList();
for(int j=0;j<4;j++){ //每组4个
list2.add(list.get(i+j*7)); //间隔7个,所以乘以7
}
list1.add(list2);
}
System.out.println(list1); //打印最后的结果
}
}
谢谢回答,如果只允许在一个数组里面(不新建数组),有没有可能实现?
点赞