有10个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是第几号的人
只是用一个for完成
public class Test06 { public static void main(String[] args) { int[] arr={1,2,3,4,5,6,7,8,9,10}; int counter=0;//用于计算退出的人数 int j=0;//用于报数 /* arr[i%arr.length]可以用来表示数组成环时元素的定位 * j用于报数,和成环元素的定位下标无关 * */ for(int i=0;counter<arr.length-1;i++){ if(arr[i%arr.length]!=0){//元素不为0时,表明没有退出 if((j+1)%3==0){//报数是3时 System.out.println("退出的人是:"+arr[i%arr.length]); arr[i%arr.length]=0;//元素置零表示退出 counter++; } j++;//只要没有退出,报数就加1 } } for(int i=0;i<arr.length;i++){ if(arr[i]!=0){ System.out.println("最后剩下的人是:"+arr[i]+"号"); } } } }