public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("输入总人数");
int n = input.nextInt();
int[] persons = new int[n];
//创建1、2、3、4...n
for (int i=1;i<persons.length;i++){
persons[i-1]=i;
}
//剩余人数
int count=1;
//报数
//建立一个循环
while (true) {
int index=0;
//建立for循环,遍历总人数数组
for (int i = 0; i < persons.length; i++) {
count++;//报了多少次
if (count == 4) {
count=1;
persons[i] =0;//把报了数的设为0,代表已经踢出去了
index++;//每轮计数报了多少个人,然后踢出去
}
}
int newlength=0;
//动态缩荣
int[] newper = new int[persons.length-index];//设置新数组
for(int k=0; k< persons.length;k++) {//把老数组遍历
if(persons[k]!=0) {
newper[newlength]=persons[k];//重新设置新数组里的内容
newlength++;
}
}
persons = newper;
//当队里只有一个人了就代表,这个人就是队长
if (index==1) {
System.out.println("第 " +persons[0]+ " 个是队长");
break;
}
}
}
每一句我都做了注解