import java.util.ArrayList; 
public class ArrayAndList <E> { 
    
    public static void main(String[] args) { 
      int[][] b= {{1,2}, {2,3,4,5}}; 
      ArrayList <ArrayList <Integer>> list = toList(b); 
      for(ArrayList <Integer> subList : list) { 
        for(Integer iObj : subList) { 
          System.out.println(iObj); 
        } 
      } 
      int[][] list1 = toArray(list); 
      for(int[] subList : list1) { 
          for(int i : subList) { 
            System.out.println(i); 
          } 
      } 
      
    
    } 
    public static ArrayList <ArrayList <Integer>> toList(int[][]a){ 
ArrayList <ArrayList <Integer>> l1=new ArrayList <ArrayList <Integer>>(); for(int[]b:a){ 
          ArrayList <Integer> l2=new ArrayList <Integer>(); 
for(int c:b){ 
l2.add(c); 

l1.add(l2); } 
return l1; 

    
  public static int[][] toArray(ArrayList <ArrayList <Integer>> l){ 
int k=0; 
for (ArrayList <Integer> l1:l){ 
k++; 

int[]j=new int[k-1]; k=0; 
for (ArrayList <Integer> l1:l){ 
for(Integer obj:l1){ 
j[k]+=1; 

k++; 

// 
int[][] result=new int[k-1][]; 
k=0; 
for (ArrayList <Integer> l1:l){ 
result[k]=new int[j[k]-1]; 
int i=0; 
for(Integer obj:l1){ 
result[k][i]=obj; 
i++; 

k++; 

return result; 
} } 
运行是抛出java.lang.ArrayIndexOutOfBoundsException异常

解决方案 »

  1.   

    很简单的问题,你K-1做什么啊,不要减1就好了java技术交流群( 30700814 ),本群宗旨:至诚交流.不诚者勿入,谢谢合作!
      

  2.   


    import java.util.ArrayList; 
    public class ArrayAndList <E> { 
        
        public static void main(String[] args) { 
          int[][] b= {{1,2}, {2,3,4,5}}; 
          ArrayList <ArrayList <Integer>> list = toList(b); 
          for(ArrayList <Integer> subList : list) { 
            for(Integer iObj : subList) { 
              System.out.println(iObj); 
            } 
          } 
          int[][] list1 = toArray(list); 
          for(int[] subList : list1) { 
              for(int i : subList) { 
                System.out.println(i); 
              } 
          } 
          
        
        } 
        public static ArrayList <ArrayList <Integer>> toList(int[][]a){ 
    ArrayList <ArrayList <Integer>> l1=new ArrayList <ArrayList <Integer>>(); for(int[]b:a){ 
              ArrayList <Integer> l2=new ArrayList <Integer>(); 
    for(int c:b){ 
    l2.add(c); 

    l1.add(l2); } 
    return l1; 

        
      public static int[][] toArray(ArrayList <ArrayList <Integer>> l){ 
    int k=0; 
    for (ArrayList <Integer> l1:l){ 
    k++; 

    int[]j=new int[k-1]; k=0; 
    for (ArrayList <Integer> l1:l){ 
    for(Integer obj:l1){ 
    j[k]+=1; 

    k++; 

    // 
    int[][] result=new int[k-1][]; 
    k=0; 
    for (ArrayList <Integer> l1:l){ 
    result[k]=new int[j[k]-1]; 
    int i=0; 
    for(Integer obj:l1){ 
    result[k][i]=obj; 
    i++; 

    k++; 

    return result; 
    } } 
      

  3.   

    import java.util.ArrayList; 
    public class ArrayAndList <E> { 
        
    public static void main(String[] args) { 
          int[][] b= {{1,2}, {2,3,4,5}}; 
          ArrayList <ArrayList <Integer>> list = toList(b); 
          for(ArrayList <Integer> subList : list) { 
            for(Integer iObj : subList) { 
              System.out.println(iObj); 
            } 
          } 
          int[][] list1 = toArray(list); 
          for(int[] subList : list1) { 
              for(int i : subList) { 
                System.out.println(i); 
              } 
          } 
          
        
        } 
        public static ArrayList <ArrayList <Integer>> toList(int[][]a){ 
    ArrayList <ArrayList <Integer>> l1=new ArrayList <ArrayList <Integer>>();  for(int[]b:a){ 
        ArrayList <Integer> l2=new ArrayList <Integer>(); 
    for(int c:b){ 
    l2.add(c); 

    l1.add(l2); 


    return l1; 

        
    public static int[][] toArray(ArrayList <ArrayList <Integer>> l){ 
    int k=0; 
    for (ArrayList <Integer> l1:l){ 
    k++; 

    int[]j=new int[k]; 

    k=0; 
    for (ArrayList <Integer> l1:l){ 
    for(Integer obj:l1){
    j[k]+=1; 

    k++; 

    // 
    int[][] result=new int[k][]; //这里把int[k-1][]改成int[k][]
    k=0; 
    for (ArrayList <Integer> l1:l){ 
    result[k]=new int[j[k]]; //这里把int[j[k]-1]改成int[j[k]]
    int i=0; 
    for(Integer obj:l1){
    result[k][i]=obj; 
    i++; 

    k++; 

    return result; 
    } } 
    楼主你的l、l1变量名取得太猥琐了,呵呵。。都要看花了