public static void main(String[] args) { //15个猴子围成一圈选大王,依次1-7循环报数, // 报到7的猴子被淘汰,后面的猴子再从1开始数, // 直到最后剩一只猴子称为大王,问:哪只猴子会成为大王? //生成数组内容{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} int[] monkey = new int[15]; for (int i = 0; i < 15; i++) { monkey[i] = i + 1; } //记录猴子数量 int count = 15; //记录数组索引下标 int index = 0; //记录报数。报到7的淘汰。 int num = 1; //因为不确定循环次数,所以使用while循环。 //当猴子数量为1时停止循环。所以循环条件为coun>1 //将淘汰的猴子对应的数组里的数值改为0 while (count > 1) { if (monkey[index] != 0) { //判断当前位置有没有被淘汰。 if (num % 7 == 0) { //判断报数是否为7 monkey[index] = 0; //将报到7的位置改为0 count--; //猴子数量减1 } num++; //报数 } index++; //数字索引加1,(下一只猴子) if (index == 15) { //数组长度为15 ,超过15则从第一个开始 index = 0; //将索引改为0 } } //数组中不为0的是大王。 for (int i = 0; i < 15; i++) { if (monkey[i] != 0) { System.out.println("第" + monkey[i] + "只猴子当大王"); } } }