0
//arraylist problem
public static void main(String[] args) {
   double Vn=0;
   double thetap=0;
   List<Integer> ints = new ArrayList<Integer>();
   for(int c = 0; c < 2000; c++){
      ints.add(c);
   }
   while(ints.size()!=0) { 
      int x=rnd.nextInt();
      if(x>=0&&x<2000) {
         if(ints.contains(x)){
            double r=10;
            double Vc= r * r / 3.0D;//area
            Vn+=Vc;   //sum         
            ints.remove(x);// that's the problem
            thetap=Vn/V;

         }
      }
   }  
}
4

2 に答える 2

3

の場合int、インデックスの要素を削除しcontainsながら、値を検索します。remove

したがって、いくつかの削除の後、末尾近くの数字のインデックスが小さくなる可能性があります。たとえば、

0, 1, 2 -> 0, 2

したがって、ここcontains(2)は当てはまりremove(2)ますが、例外があります。

また、オブジェクトの最初のオカレンスを削除するremoveバリアントがあります。

于 2013-06-26T21:14:32.227 に答える
1

remove(int index)あなたはではなくを呼び出していremove(Object o)ます。試す

ints.remove(Integer.valueOf(x));
于 2013-06-26T21:19:42.607 に答える