import java.util.ArrayList;public class Test { static String[] randomSort(ArrayList al) {
String[] sbuf = new String[al.size()];
for(int i = 0; i < sbuf.length; i++) {
sbuf[i] = (String)al.remove((int)(Math.random()*al.size()));
}
return sbuf;
}

public static void main(String[] args) throws Exception {
ArrayList al = new ArrayList();
for(int i = 0; i < 10; i++) {
char c = (char)(i+97);
al.add(String.valueOf(c));
}

String[] sbuf = randomSort(al);

String[] sbuf2 = new String[al.size()];
for(int i = 0; i < sbuf2.length; i++) {
sbuf2[i] = sbuf[i];
System.out.println(sbuf2[i]);
}

for(int i = 0; i < sbuf2.length; i++) {
System.out.println(sbuf2[i]);
}
}
}
给结果
所为什么

解决方案 »

  1.   

    你的就打不出来结果!
    sbuf[i] = (String)al.remove((int)(Math.random()*al.size()));这一句已经将al清空了!
    String[] sbuf2 = new String[al.size()];这里你定义的就是一个空数组!al.size()=0;
    for(int i = 0; i < sbuf2.length; i++) {
    sbuf2[i] = sbuf[i];
    System.out.println(sbuf2[i]);
    }
    你这个循环就不会执行,怎么会有结果!
    这里改一下就可以了1String[] sbuf2 = new String[al.size()];这一句改为String[] sbuf2 = new String[sbuf.length];
      

  2.   

    没有结果,你的ArrayList al在randomSort中都remove光了,sbuf2是空的
      

  3.   

    sbuf[i] = (String)al.remove((int)(Math.random()*al.size()));这一句已经将al清空了!=====================================================================================
    问题就是为什么清空了?
      

  4.   

    自然是清空了,因为你一个循环,每次从List中删除一个元素,只删不加,自然最后肯定空的
      

  5.   

    DeBug 报告,
    在执行String[] sbuf = randomSort(al);之前,al中的数据为 
    [a, b, c, d, e, f, g, h, i, j]在执行了 randomSort(al) 的
    for(int i = 0; i < sbuf.length; i++) {
    sbuf[i] = (String)al.remove((int)(Math.random()*al.size()));
    }
    后,al中的数据变成了:[](数据被清空),该方法返回后String[] sbuf中的数据为:[](空),长度为0