java 二维数组拆分并取值

数组总长度已知,
第 3 个与最后一个中间的数组为动态
在将数组全部输出的前提下,需要得出中间的数组有几组

个人觉得,不算数组下标的前两个 [0]和[1],将第3个作为第一个,不算数组的最后一个,可以拿到中间的数组,
下面是一个 Test 类


package com.org.tjkmes.basicproduct.entity;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class SZ_Test {

    @SuppressWarnings("unused")
    public static void main(String[] args) {

    String bufferzj[][] = new String[100][100];
    bufferzj =  getChartdtlsSplitBZWPzj();//纵筋描述

    }

    @SuppressWarnings("unchecked")
    private static String[][] getChartdtlsSplitBZWPzj() {
        //String value = basicproduct.getZongremark();
        String value = "8:200+100*6+200*2+300*3+400*4+200";
        //此时 长度为 11
        /*
        【 去掉前2组后 100*6 为 1组  200*2 为第 2组,
             需要计算出  中间的动态值  一共有几组
        value 中 100*6+200*2+300*3+400*4 为动态的,现在为 4 组
        如 :
        String value = "8:200+  100*6+200*2+300*3   +200" ,
            现在为 3 组
         】
         */
        //【1.】首先以数字进行分割
        String regex = "[a-z]+|\\d+";//"[a-z]"匹配"a"到"z"范围
        内的任何小写字母 ; \\d+ 匹配所有数字 
        Pattern pattern =Pattern.compile(regex);

        @SuppressWarnings("rawtypes")
        List list=new ArrayList();
          Matcher matcher = pattern.matcher(value);
          while(matcher.find()){
              list.add(matcher.group().toString());//获取总长度
          }
          // 初始化一个二维字符串数组,只指定了行数   
          int intlistsize = list.size();//11
          System.out.println("1.总长度为 :  " +intlistsize);
          int countnum = intlistsize %intlistsize == 0 ? intlistsize /intlistsize : intlistsize /intlistsize + 1;
          //【2. 对数组进行分组】
          // 格式为 
          String[][] arr = new String[countnum][intlistsize];//[1][数组长度]
          for (int i = 0; i < countnum; i++) {//1组
            if (i*2 + 0<intlistsize) {
                arr[i][0] = (String) list.get(i*intlistsize + 0);
                            //纵筋直径
            }
            if (i*2 + 1<intlistsize) {
                arr[i][1] = (String) list.get(i*intlistsize + 1);//纵筋抽头
            }


            /** -------这里为动态的-----start---------  */
            /* 
              8:200+   【 100*6+200*2+300*3+400*4 】   +200
                【 】内为 动态
                100*6 为第 1组 , 200*2为第 2组, 300*3 为第 3组,....
            */
            if (i*2 + 2<intlistsize) {
                arr[i][2] = (String) list.get(i*5 + 2);//横筋间隔
            }
            if (i*2 + 3<intlistsize) {
                arr[i][3] = (String) list.get(i*5 + 3);//数量
            }

//          .                                   //横泾间隔  n
//          .                                   //数量 n
//          .
//          .
             System.out.println("2.组数为 :  "   );

            /** -------这里为动态的-----end----------  */

            //最后一组(动态)
            if (i*2 + 10<intlistsize) {
                arr[i][10] = (String) list.get(i*intlistsize + 10);//纵筋留尾 【最后一组】
            }
         }
          return arr;
          // 8:200+100*6+200*2+300*3+400*4+200
          // arr 格式为 [[8, 200, 100, 6, 200, 2, 300, 3, 400, 4, 200]] 
    }

}