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)+"号,");
}
}
}
如何改正,求高手
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);
}
}