java-选队长小游戏

 

功能描述

今天同学们相约一起爬山游玩,为了更好的进行这场活动,大家准备推举一个人作为出游的临时队长。为了体现合理公平,大家提出了一个比较有趣的规则。所有人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,剩下的人继续报数,最后留下的当选为队长

代码实现

 1 public static void main(String[] args) {
 2         // 创建扫描对象,接收小队人数
 3         Scanner scanner = new Scanner(System.in);
 4         System.out.println("请输入人数:");
 5         int num = scanner.nextInt();
 6         //根据人数创建数组
 7         int[] members = new int[num];
 8         //先给人员编号,1.2.....num。这里也可以不赋值,最后根据下标确定编号。
 9         for (int i = 0; i < num; i++) {
10             members[i] = i + 1;
11         }
12         System.out.println(Arrays.toString(members));
13         //创建对象:报数内容,初始是1
14         int count = 1;
15         //创建对象:备选队长人数初始化num
16         int alternativeCaptainNum = num;
17         A:while (true) {
18             //遍历全部成员
19             for (int i = 0; i < num; i++) {
20                 //先判断成员编号是否是-1,如果是-1,说明已经落选了
21                 if(members[i] != -1) {
22                     System.out.println( members[i]+"报数 : "+count);
23                     //没有落选,报数加1;
24                     count++;
25                 }
26                 //因为上面加了1,所以这里用4判断
27                 if (count == 4) {
28                     System.out.println(members[i]+"您落选了! ");
29                     //如果等于4,报数到3了,下个人要从1开始报数
30                     count = 1;
31                     //给成员赋值为-1,用于判断是落选了。
32                     members[i] = -1;
33                     //备选队长人数少1
34                     alternativeCaptainNum--;
35                 }
36                 //就剩一个人了,结束循环;这里可以在for循环外部判断,跳出while循环。这里判断好处是可以快速结束for循环,后面的-1不用判断报数了。
37                 if(alternativeCaptainNum == 1 ) {
38                     break A;
39                 }
40             }
41         }
42         System.out.println(Arrays.toString(members));
43         //遍历最终数据,查找编号部署-1的人
44         for(int i = 0; i < num; i++) {
45             if(members[i] != -1) {
46                 System.out.println("最终队长是: "+members[i]);
47                 break;
48             }
49         }
50     }

代码测试

请输入人数:
8
[1, 2, 3, 4, 5, 6, 7, 8]
1报数 : 1
2报数 : 2
3报数 : 3
3您落选了! 
4报数 : 1
5报数 : 2
6报数 : 3
6您落选了! 
7报数 : 1
8报数 : 2
1报数 : 3
1您落选了! 
2报数 : 1
4报数 : 2
5报数 : 3
5您落选了! 
7报数 : 1
8报数 : 2
2报数 : 3
2您落选了! 
4报数 : 1
7报数 : 2
8报数 : 3
8您落选了! 
4报数 : 1
7报数 : 2
4报数 : 3
4您落选了! 
[-1, -1, -1, -1, -1, -1, 7, -1]
最终队长是: 7

 

posted @ 2021-03-05 16:31  进击的小白·  阅读(98)  评论(0)    收藏  举报