java 10个小孩子,围成一个圈,从第2个开始数数,每次数到3的孩子就离开圈,然后继续数。

//10个小孩子,围成一个圈,从第2个开始数数,每次数到3的孩子就离开圈,然后继续数。

public class KKK {
 public static void main(String[] args) throws InterruptedException {
  int[] num = { 2, 3, 4, 5, 6, 7, 8, 9, 10,1 };
  //PS:一个圆圈,第二个和第一个其实是可以转换,就把2号小孩子排第一位上去就好了
  int x = num.length; //圈内的小孩子数量
  int count = 0;
   int i = 0;
  int[] y=null , z;
  while (true) {//因为我们是间隔取值,所以虽然知道数组长度,但是咱们不知道要循环几次,用死循环
   if (x == 0) {
    break;//判断要是所有小孩子全部出圈了就结束死循环
   }
   if (y==null) {
    y=new int[x];
   }
   int l=num[i];
   count++;//对循环进行计数
   i++;
   if (count == 3) {
    System.out.print(l+"  ");//当循环三次,也就是数了三次,就把这个提出来
    x--;//圈内的小孩子减去一个
    count = 0;//循环计数器归零方便下次使用
   }else {
    y[i-1]=num[i-1];//当计数器不是三的值放到新的数组进去

   }
   if (i == num.length) {//判断数数是否数完一圈了
    int k=0;
    for (int j = 0; j < y.length; j++) {//次循环用于统计圈内还剩余多少个小孩子
     if (y[j]!=0) {
      k++;     
     }
    }
    z=new int[k];
    k=0;
    for (int j = 0; j < y.length; j++) {//把剩余的值重新组一个数组
     if (y[j]!=0) {

      z[k]=y[j];
      k++;
     }
    }
    num=z;//用剩余的小孩子组成的圈继续回去循环
    i = 0;
    y=null;
   }
  }
 }
}
//下面的这个类是上面的升级版,可以随意定义圈内孩子数量,从第几个开始数,每次数几个
//要是看不懂,就先吧上面的弄懂了再来看。参照上面注解应该能看懂的
import java.util.Scanner;

/**
 * a 个小孩子,围成一个圈,从第 b 个开始数数,每次数到 c 的孩子就离开圈,然后继续数。
 * 
 * @author Desen_Z
 */
public class KKK {
 public static void main(String[] args) throws InterruptedException {
  System.out.println("请输入小组人数");
  int a = new Scanner(System.in).nextInt();
  int b;
  int c;
  while (true) {
   System.out.println("请输入从第几位开始");
   b = new Scanner(System.in).nextInt();
   if (b <= a) {
    break;
   }
   System.out.println("输入有误,请重新输入");
  }
  while (true) {
   System.out.println("请输入间隔数");
   c = new Scanner(System.in).nextInt();
   if (c <= a) {
    break;
   }
   System.out.println("输入有误,请重新输入");
  }
  int[] a1 = new int[a];
  for (int i = 0; i < a; i++) {
   a1[i] = i + 1;
  }
  int[] b1 = new int[a];
  int q = 0, p = b1.length - b;
  for (int i = b - 1; i < b1.length; i++) {

   b1[q] = a1[i];
   q++;

  }
  for (int i = 0; i < b - 1; i++) {
   b1[q] = a1[i];
   q++;
  }
  int[] num = b1;
  int x = num.length, count = 0, i = 0;
  int[] y = null, z;
  while (true) {
   if (x == 0) {
    break;
   }
   if (y == null) {
    y = new int[x];
   }
   int l = num[i];
   count++;
   i++;
   if (count == c) {
    System.out.print(l + "  ");
    x--;
    count = 0;
   } else {
    y[i - 1] = num[i - 1];
   }
   if (i == num.length) {
    int k = 0;
    for (int j = 0; j < y.length; j++) {
     if (y[j] != 0) {
      k++;
     }
    }
    z = new int[k];
    k = 0;
    for (int j = 0; j < y.length; j++) {
     if (y[j] != 0) {
      z[k] = y[j];
      k++;
     }
    }
    num = z;
    i = 0;
    y = null;
   }
  }
 }
}



你可能感兴趣的:(数组,初学者)