根据题目要求,我们需要知道那只鸭子被淘汰。
我们需要知道的变量有:1.十五只鸭子的序号 2. 报出的数字

因此,我们需要知道每只鸭子的位置,即在数组中的位置,或者说是数组的下标值。 此外,我们还有一个循环,循环报数1,2,3....报到7就开始第二轮循环。

首先,我们先定义一个数组,用来储存鸭子的位置和序号。

int[] ducks = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

接着我们对数组进行遍历,来排除报7的鸭子。

for (int i=1;i<=15;i++){//1-7循环报数,报7的淘汰。换句话来说,持续报数,报到7的倍数被淘汰//所以直接对报的数字取余即可if (i%7==0){//淘汰报到7的狮子被淘汰,即为0ducks[i-1]=0;//数组下标从零开始,所以需要减一}}
System.out.println(Arrays.toString(ducks));//打印数组

代码执行结果:

如图,序号为7,14的鸭子报到了7,数值被改为0,即这两只鸭子被淘汰了。

但是这样报数,只循环了两轮,我们需要一直循环下去。由于我们并不知道需要循环多少次,所以我们应该采用do-while循环。

        int num = 1;//报出的数字int index = 0;//记录下标do {//初始化index,当下标大于等于15的时候,从零开始if (index >= ducks.length) {index = 0;}//初始化num,当鸭子报的数字到7的时候,从一开始if (num > 7) {num = 1;}//如果鸭子已经被淘汰,此时序号值为0,应当跳过报数if (ducks[index] == 0) {index++;continue;}//当num值为7,此时对应的鸭子被淘汰,序号值记为0if (num == 7) {ducks[index] = 0;}index++;//数组下标继续增加num++;//报的数值增加//当还剩一只鸭子的时候,这只鸭子就成为了鸭王,跳出循环int count = 0;//记录被淘汰的狮子个数for (int i = 0; i < ducks.length; i++) {if (ducks[i] == 0) {count++;//有一只被淘汰,就记录一个}//如果被淘汰了14只鸭子,那么鸭王就选出来了if (count == 14) {//遍历找到最后一只鸭子当鸭王for (int duck : ducks) {if (duck != 0) {System.out.println(duck);//打印输出最后的鸭子序号}}System.exit(0);//结束程序}}} while (true);

最后运行的结果:

Java基础题(用数组和循环解决)——15只鸭子围成一圈,依次报数,报到7被淘汰,最后剩下的鸭子成为鸭王,求鸭王为第几只?相关推荐

  1. Java基础题——15只狮子围成一圈,依次报数,报到7被剔除,最后剩下的狮子成为狮王,求狮王为第几只?

    问题如下:Java基础题--15只狮子围成一圈,依次报数,报到7被剔除,最后剩下的狮子成为狮王,求狮王为第几只? 解决问题所使用的重点:利用循环. 大体思路:每只狮子都设为true,然后循环报数,到7 ...

  2. Java解决有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位

    面试的时候碰到这道题,后来百度了一下感觉答案不对,而且也比较缺少java版本.就自己写了下. 题目描述:有 n 个人围成一圈,顺序排号.从第一个人开始报数(从 1 到 3 报数),凡报到 3的人退出圈 ...

  3. java 小孩报数_N个小孩围成一圈1-3报数,报3出局

    有N个小孩围成一圈,从1-3报数,报到3的出列,编码实现小孩出列顺序. [随便一个方向,1-3的排,是3的出局] 提示:用到Boolean 实现: public class WeiQuan { pub ...

  4. Java基础语法之数组练习——循环输出数列的值并求和

    import java.util.Scanner; public class ArrayPractice{public static void main(String[] args){Scanner ...

  5. python解决猴子选大王问题:15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子成为大王。问: 哪只猴子会成为大王 ?

    话不多说,超级简单,直接上代码: ## 给猴子编号 AllMonkey = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]## 循环出栈 num ...

  6. (链表解决)13个人围成一圈,从第一个人开始顺序报号1,2,3,凡报到3的人,退出圈子,找出最后留在圈子里的人的序号。

    题目 13个人围成一圈,从第一个人开始顺序报号1,2,3,凡报到3的人,退出圈子.找出最后留在圈子里的人的序号. 代码 #include <stdio.h> #define n 13 ty ...

  7. c语言编程题:m个人围成一圈,每数n个人就踢出一个直到剩下一个人,m个人围成一圈,1,2,3循环报数,报到3的人退出,并... m个人围成一个圈有多少种方法?...

    导航:网站首页 > m个人围成一圈,1,2,3循环报数,报到3的人退出,并... m个人围成一个圈有多少种方法? m个人围成一圈,1,2,3循环报数,报到3的人退出,并... m个人围成一个圈有 ...

  8. Java基础题2从入门到放弃的第五天

    Java基础题2从入门到放弃的第5天 小博主也是初学者,肯定有地方可以用更简单的方法,希望可以指点出来.谢谢! 1分支语句 1. 让用户输入一个100以内的整数x,再输入一个100到200之间的整数y ...

  9. Java基础题(错题小结)

    Java基础题(错题小结) 1. 字符串 1.1 题1 下面程序的输出是: String x="fmn"; x.toUpperCase(); String y = x.replac ...

最新文章

  1. C++中关键字volatile和mutable用法
  2. 【迁移学习(Transfer L)全面指南】元学习
  3. python 验证模型_Python中的模型验证
  4. Server 2012 Hyper-v新功能之二:自动化支持技术
  5. LeetCode 22. 括号生成(回溯/DP)
  6. 综合实例_为啥要做“三维管线综合”?看个实例就明白
  7. -bash: warning: setlocale: LC_CTYPE: cannot change
  8. mysql 插入万条数据_你向 MySQL 插入 100万 条数据用了多久?
  9. SSH面试常被问到的问题
  10. 夏令营/保研/考研复试被问到优缺点怎么回答?
  11. leaftlet 显示个性化图标、旋转图标
  12. 数据库系统概论(高级篇)
  13. 高效文件搜索工具Everything/Listary
  14. live2dviewer android,Live2DViewerEX
  15. Python-定时爬取指定城市天气(一)-发送给关心的微信好友
  16. AndroidManifest.xml文件解析(详解)
  17. 巧用宏录制,轻松制作Excel简易查询小系统
  18. excel 转换MAC地址格式
  19. 计算机主机突然断电有什么影响,台式机突然断电有什么危害
  20. 全球名校AI课程库(4)| Stanford斯坦福 · 机器学习课程『Machine Learning』

热门文章

  1. java 数据库测试_java连接sql数据库测试
  2. 火山PC无边框窗口尺寸的调整方法教程
  3. 这些实用的人工智能书收藏一波
  4. 【最优化理论】牛顿法+Matlab代码实现
  5. DBCP连接池配置详解
  6. 火车进出栈问题 题解
  7. 微信分享universal link校验不通过
  8. LPC总线之:ISA总线(X-Bus总线)、EISA总线、LPC总线
  9. Activity四种启动模式详细整理
  10. 前端岗位初入职场后的最初一段时间需要做什么