- class Test{
- public static void main(String[] args) {
- /*
- 思路:
- 1.定义一个boolean类型的数组,用于存储100个人是否报号14,初始状态,设置100个人未报号14为true
- 2.遍历数组,当元素的值为true时,表示这个人没有报过号14,count++
- 3.设置报号计数器初始值为0,每次报号count加1,每次报号到14人即count的值累加到14时,状态变为false
- 4.当报号到14时,count恢复至0,重新计数,同时,每次有人报号14时,剩余的未报号的人数就减少一个人
- 5.直到剩下最后一个人的时候,停止报号
- */
- //定义一个boolean类型的数组,用于存储100个人是否报号14
- boolean[] people = new boolean[100];
-
- //初始状态,设置100个人未报号14为true
- for (int i=0; i<people.length; i++) {
- people[i] = true;
- }
- int num = 0; //num表示已经有多少人报号了14
- int count = 0; //定义计数器
- int[] arr = new int[people.length]; //存储每次报14这个数的人的位置
- while (num<people.length) {
- for (int i=0; i<people.length; i++) {
- if (people[i]) { //如果没有报号14就计数
- count++;
- }
- if (count == 14) { //当count的值为14时,表示这个位置的人报号14了
- people[i] = false;
- count = 0;
- arr[num++] = (i+1); //将每次报14这个数的人的位置存储到一个新的数组中
- }
- }
- }
- System.out.println("次数"+ "\t" + "100人中的第几人");
- for (int i=0; i<arr.length; i++) {
- System.out.println((i+1)+ " \t----> \t" + arr[i]);
- }
- //最后剩下的人就是最后一个报14这个数的人
- System.out.println("最后剩下的是100人中的第" + arr[arr.length-1] +"个人");
- }
- }
复制代码
|