数组边界超过异常
package org.lf.homework;
/*
* 案例:
1、随机生成10个[1,100]之间的整数,放到List集合中,遍历显示
2、找出前3名最大值,删除它们,注意可能重复
3、显示删除后的结果
*/
import java.util.ArrayList;
import java.util.Random;
public class HomeWork_6 {
public static void main(String[] args) {
Random ran = new Random();
ArrayList al = new ArrayList();
ArrayList alBig = new ArrayList();
//随机录入数字
for(int i = 0; i <= 9; i++) {
al.add(ran.nextInt(100) + 1);
}
System.out.println("10个随机值:" + al);
//转换为数组
Object[] arr = al.toArray();
//object类型数组转换为int数组类型,方便进行比较大小
int[] newarr = new int[10];
for(int i = 0; i <= 9; i++) {
newarr[i] = (int) arr[i];
}
//找出最大值并且删除掉
for(int i = 0; i <= 2; i++) {
int max = newarr[0];
for(int j = 0; j <= newarr.length - 1; j++) {
if(max < newarr[j]) {
max = newarr[j];
}
}
alBig.add(max); //记录最大值
al.remove(max); //关联将最大值所在的索引,删除该元素
}
System.out.println("三个大的:" + alBig);
System.out.println("删除后:" + al);
}
}
这是为什么呢,按理说没有改变for循环中的条件,remove只会删除掉对应al中的元素啊.