菜鸟求助:Java有n个人,1到3报数,报数为3的人退出,最后留下的人原来的标号是多少

import java.util.Scanner;
public class Yuesefu{
public static void main(String ags[]){
Scanner gain=new Scanner(System.in);
System.out.println("请输入总共的人数:");
int length=gain.nextInt();//从键盘获取数组的长度
boolean a[]=new boolean[length];
//将数组a的初始值设为true
for (int i = 0;i < a.length; i++)
a[i]=true;
for(int j=0;j<=a.length-1;j++){
if(a[j]==true)
if(j%3==0)
a[j]=false;
}
System.out.println("最后留下的是原来的");
for(int i=0;i<a.length;i++){
if(a[i]==true)
System.out.print((i+1)+"号,");
}
}
}
如何改正,求高手

http://baike.baidu.com/link?url=D6VN5oI849ESAbTAsPhwqIS4iSB4Y9wUq8Tl56BI-GjVs7XYQVSkvWVncIDeMZKMEB7Vpx0fGDJmexKMiW5ZE_

if (j% 3 == 0)这一行改成j+1试试,你的数组下标是从0开始,及j=0时,j%3==0,你这题就这个地方漏了

public class Increase {

public static void rep(boolean[] people) {
    int i = 0,j=0,n=people.length,m=n;
    while(n>2){
        i=++i%m;
        if (people[i] == true){
            j++;
            if (j==3){
                people[i] = false;
                System.out.println(i);
                n--;//总人数减1
                j = 0;//到3从头数
            }
        }
    }
}

public static void main(String[] args) {
    boolean people[] = new boolean[10];
    for(int i = 0; i<10; i++){
        people[i] = true;
    }
    rep(people);
}

}