日期:2014-05-20  浏览次数:20721 次

新手问题,报错求解!
小程序是让一群孩子手拉手围成圈,依次报数,数到三的孩子离开,下个孩子又从1开始报。不断循环。直到剩下最后一个孩子,输出他的ID号。建了两个类:kid、 kidcircle,NEW出一个500人的圈子。但是在CMD中编译执行,总是报错Exception in thread "main" java.lang.NullPointerException,求解求解...


public class Count3quit
{
public static void main(String[] args){
  kidcircle kc=new kidcircle(500);
      int countnum=0;
  kid k=kc.first;
  while(kc.count>1){
    countnum++;
        if(countnum==3){
           countnum=0;
           kc.delete(k);
        }
    k=k.right;
  }
System.out.println(kc.first.id);
}
}
class kid
{
int id;
kid left,right;
}
class kidcircle
{
int count=0;
kid first,last;
kidcircle(int n){

}
public void add(){
kid k=new kid();
k.id=count;
  if(count<=0){
     first=k;
 last=k;
 k.left=k.right=k;
  } 
  else{
  last.right=k;
  k.left=last;
  k.right=first;
  first.left=k;
  last=k;
  }
  count++;
}
public void delete(kid k){
   if(count<=0){
   return;
   }else if(count==1){first=last=null;}
   else {
    k.left.right=k.right;
k.right.left=k.left;
if(k==first){
first=k.right;
}
else if(k==last){
last=k.left;
}

   }
count--;
}
}
------最佳解决方案--------------------
kidcircle(int n){

}

你在构造器里什么都没干啊? 你总得先构造一个环吧。。
------其他解决方案--------------------
大意了- -谢谢!