58,453
社区成员
发帖
与我相关
我的任务
分享
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
Integer[] numbers = {5, 0, 0, 0, 0, 6, 1, 1, 1, 1, 1, 7, 2, 2, 2, 2, 2, 2, 3};
for (int start = 0; start < numbers.length; start += numbers[start]) {
int end = start + numbers[start];
end = (end >= numbers.length) ? numbers.length : end;
Integer[] temp = Arrays.copyOfRange(numbers, start, end);
System.out.println(Arrays.toString(temp));
}
}
}
输出
[5, 0, 0, 0, 0]
[6, 1, 1, 1, 1, 1]
[7, 2, 2, 2, 2, 2, 2]
[3]
import java.util.ArrayList;
import java.util.List;
public class Demo1 {
public static void main(String[] args) {
// 入参数据
int[] nums = { 5, 0, 0, 0, 0, 6, 1, 1, 1, 1, 1, 7, 2, 2, 2, 2, 2, 2 };
// 结果用二维List存放
List<List<Integer>> resultList = new ArrayList<List<Integer>>();
// 存储每个新行的数量,为0则读取下一个数字作为新行数量
int size = 0;
List<Integer> line = null;
// 开始遍历入参
for (Integer num : nums) {
if (size <= 0) {
size = num;
line = new ArrayList<Integer>();
}
// 每个数值都要写入结果集
line.add(num);
size--;
// size到达0,则当前行结束
if (size <= 0) {
resultList.add(line);
}
}
// 打印结果// 如果需要,自己再转换为数组
System.out.println(resultList);
}
}