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]);
}
}
}
给结果
所为什么
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]);
}
}
}
给结果
所为什么
解决方案 »
- 可否通过JAVA控制其它程序
- 这是为什么啊!(关于Exception)
- java问题:如何用一个循环或者方法实现随机分配?
- 在JAVA中如何实现像VB中的多文档窗体(MDI)格式?在线等!!
- JTextField值传递问题
- 不好意思,请教这个程序的异常代表什么意思啊,谢谢~
- eclipse与websphere结合开发j2ee
- 新来扎到 有一个问题想问
- 急切!! 哪里有jbuilder和oracle的数据库开发相关资料?
- 有谁知道组播与广播的区别?需要比较系统的答案!一定给高分呀!
- 求救用一个方法将数字一二三四五六七八九十转化成汉字大写的壹, 贰,叁,肆,伍,陆,柒,捌,玖,拾
- 为什么现在什么程序都要用xml手工做配置,搞的各种配置文章满天飞!
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];
问题就是为什么清空了?
在执行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