package com.sun;import java.util.ArrayList;public class Number extends Monkey{
public static void main(String[] args) {
Number n =  new Number();
n.count();
}
}
class Monkey{
private int id ;
private int num ;
private int i ;
public void count()
{
ArrayList al = new ArrayList();
for (int i = 0; i < 3; i++) {
Monkey mon = new Monkey();
mon.id = i;
mon.num = 1;
al.add(mon);
}
 while (al.size() != 1) {
i++; 
num++;
    if (((Monkey)al.get(i)).num % 3 == 0) {
        al.remove(i);
      }
if (i > al.size()) {
i = 0;
}
}
 System.out.println(((Monkey)al.get(0)).num);
}
}

解决方案 »

  1.   

    i=0 i=1 i=2 arraylist也是0,1,2
    i=3 的时候 al.get(3)  3里面没东西你当然拿不到了
      

  2.   

    if (i > al.size()) { 
    i = 0; 
    }
    如果大于数组长度 则设i为0
    没执行?
      

  3.   

    你的逻辑似乎有点乱,你放在ArrayList里的3个Monkey的num值一直都是1,并不会随着你while循环里的num++而增加,你while循环里的num++只是增加了你定义的那个Monkey类的num值,与你ArrayList里的Monkey无关
      

  4.   


    问题是你把这个判断放在最后了啊,i++到了3,然后get(3),最后才到那个判断,这是一步一步走下来的