Java使用for循环解决经典的鸡兔同笼问题示例

本文实例讲述了Java使用for循环解决经典的鸡兔同笼问题。分享给大家供大家参考,具体如下:

for循环经典,鸡兔同笼问题

问题:鸡兔同笼,鸡兔一共35只。笼子里脚一共94只,请问分别有多少只鸡和兔?

思路:首先明确思路,鸡的数量*2加上兔子的数量*4等于脚的总数94,这是一个关键点,

代码很简单,但是关键的条件却要花很多时间去找,要是不明白的真的是很烦啊。

利用for循环列举出所有可能直到if满足条件,

列出表达式 鸡*2 加 兔*4 等于 脚总数94 ,这是if的判断条件,满足就可以直接输出鸡和兔子的数量。

package demo;
public class LoopDemo4 {
  public static void main(String[] args) {
    // 鸡兔一共35只,笼子里脚一共94只,求分别有多少只鸡和多少只兔子
    // 鸡的数量*2加上兔子的数量*4等于94。
    // 利用for循环列举出所有可能直到if满足条件。
    int sum = 35;
    int foot = 94;
    // 因为不会有奇数个脚,所以都用int型
    for (int chook = 1; chook <= foot / 2; chook++)// 假设的鸡的个数
    {
      int rabbit = sum - chook; // 假设的兔子的个数
      if (rabbit * 4 + chook * 2 == foot)// 成立时就是正确的鸡兔个数,直接输出并结束循环
      {
        System.out.println("鸡的个数是:" + chook);
        System.out.println("兔的个数是:" + rabbit);
        break;
      }
    }
  }
}

运行结果:

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • Java中break、continue、return在for循环中的使用

    引言:在使用循环的时候,循环里面带有break.continue.return的时候经常弄混,今天特意整理了下,以待后用... for (int i = 1; i < 5; i++) { System.out.println("i==for=>"+i); while(i%2==0){ System.out.println("i==while==>"+i); break;//终止while循环,继续for后面的代码;(终止当前(while)循环,继续

  • 对java for 循环执行顺序的详解

    如下所示: for(表达式1;表达式2;表达式3) { //循环体 } 先执行"表达式1",再进行"表达式2"的判断,判断为真则执行 "循环体",循环体执行完以后执行表达式3. 例如 for(int i=0;i<2;i++){ //TODO } 先执行 int i = 0; 然后 判断 i<2 然后执行函数体 最后执行i++ 然后轮回到判断i<2 int[] arr = new int[3]; int j; arr[0] = 1

  • Java for循环详解

    对于java中的for循环,我们用的最多的无非就是下面这个语句: for (int i = 0; i < 10; i++) { System.err.println(i); } 但是对于for循环来说,它也有很多变体,如果不清楚了解for循环的结构原理,遇上一些变体的for循环,可能一时不太明白它的含义,for循环虽然有很多变体,但都离不开括号内3条语句的模式(除了增强for循环模式,后面再讨论) for循环的结构: for(语句A; 语句B; 语句C){ //循环体 } 其中,语句A在整个循环

  • 深入了解java8的foreach循环

    虽然java8出来很久了,但是之前用的一直也不多,最近正好学习了java8,推荐一本书还是不错的<写给大忙人看的javase8>.因为学习了Java8,所以只要能用到的地方都会去用,尤其是Java8的Stream,感觉用起来觉得很方便,因为点点点就出来了,而且代码那么简洁.现在开始慢慢深入了解java8,发现很多东西不能看表面. 比如常规遍历一个集合,下面给出例子: 1.首先遍历一个List 方式1.一开始是这样的: public static void test1(List<Strin

  • 深入理解java中for和foreach循环

    •for循环中的循环条件中的变量只求一次值!具体看最后的图片 •foreach语句是java5新增,在遍历数组.集合的时候,foreach拥有不错的性能. •foreach是for语句的简化,但是foreach并不能替代for循环.可以这么说,任何foreach都能改写为for循环,但是反之则行不通. •foreach不是java中的关键字.foreach的循环对象一般是一个集合,List.ArrayList.LinkedList.Vector.数组等. •foreach的格式: for(元素类

  • Java中List for循环的6种写法总结(推荐)

    如下所示: List<String> list = new ArrayList<String>(); /** * 方法一:最普通的不加思考的写法 * <p> * 优点:较常见,易于理解 * <p> * 缺点:每次都要计算list.size() */ for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } /** * 方法二:数组长度提取出来 * <p&g

  • Java使用for循环解决经典的鸡兔同笼问题示例

    本文实例讲述了Java使用for循环解决经典的鸡兔同笼问题.分享给大家供大家参考,具体如下: for循环经典,鸡兔同笼问题 问题:鸡兔同笼,鸡兔一共35只.笼子里脚一共94只,请问分别有多少只鸡和兔? 思路:首先明确思路,鸡的数量*2加上兔子的数量*4等于脚的总数94,这是一个关键点, 代码很简单,但是关键的条件却要花很多时间去找,要是不明白的真的是很烦啊. 利用for循环列举出所有可能直到if满足条件, 列出表达式 鸡*2 加 兔*4 等于 脚总数94 ,这是if的判断条件,满足就可以直接输出

  • Java for循环的妙用之鸡兔同笼问题

    题目描述 已知鸡的数量为n只,兔的数量为m只,鸡兔的总头数为H个鸡兔的总脚数为Y只 for循环语法 for(表达式1:表达式2:表达式3 ){  //循环体  } // 表达式1为赋值语句. 作用:为为循环变量赋初始值: 表达式2为条件语句. 作用:是循环结构的循环条件 表达式3为赋值语句(通常用++或–). 作用:用开修改循环变量的值 解题思路 我们已知鸡的数量为n,兔的数量为m.即 H=n+m,Y=2*n+4*m. 因为不知道鸡和兔的数量,那么我们先假设鸡的数量为1,然后用for循环寻其于兔

  • Python解决鸡兔同笼问题的方法

    本文实例讲述了Python解决鸡兔同笼问题的方法,分享给大家供大家参考.具体分析如下: 问题描述 一个笼子里面关了鸡和兔子(鸡有 2 只脚,兔子有 4 只脚,没有例外).已经知道了笼 子里面脚的总数 a,问笼子里面至少有多少只动物,至多有多少只动物 输入数据 第 1 行是测试数据的组数 n,后面跟着 n 行输入.每组测试数据占 1 行,包括一个正整 数 a (a < 32768). 输出要求 n 行,每行输出对应一个输入.输出是两个正整数,第一个是最少的动物数,第二个是 最多的动物数,两个正整数

  • Java用BigDecimal类解决Double类型精度丢失的问题

    本篇要点 简单描述浮点数十进制转二进制精度丢失的原因. 介绍几种创建BigDecimal方式的区别. 整理了高精度计算的工具类. 学习了阿里巴巴Java开发手册关于BigDecimal比较相等的规定. 经典问题:浮点数精度丢失 精度丢失的问题是在其他计算机语言中也都会出现,float和double类型的数据在执行二进制浮点运算的时候,并没有提供完全精确的结果.产生误差不在于数的大小,而是因为数的精度. 关于浮点数存储精度丢失的问题,话题过于庞大,感兴趣的同学可以自行搜索一下:[解惑]剖析floa

  • java哈希算法HashMap经典面试题目汇总解析

    目录 1.HashMap的数据结构? 2.HashMap的工作原理? 3.当两个对象的hashCode相同会发生什么? 4.你知道hash的实现吗?为什么要这样实现? 5.为什么要用异或运算符? 6.HashMap的table的容量如何确定? 7.HashMap中put方法的过程? 8.数组扩容的过程? 9.为什么不一直使用红黑树? 10.说说你对红黑树的见解? 11.jdk8中对HashMap做了哪些改变? 12.HashMap,LinkedHashMap,TreeMap有什么区别? 13.H

  • 基于Java数组实现循环队列的两种方法小结

    用java实现循环队列的方法: 1.添加一个属性size用来记录眼下的元素个数. 目的是当head=rear的时候.通过size=0还是size=数组长度.来区分队列为空,或者队列已满. 2.数组中仅仅存储数组大小-1个元素,保证rear转一圈之后不会和head相等.也就是队列满的时候.rear+1=head,中间刚好空一个元素. 当rear=head的时候.一定是队列空了. 队列(Queue)两端同意操作的类型不一样: 能够进行删除的一端称为队头,这样的操作也叫出队dequeue: 能够进行插

  • Java优化for循环嵌套的高效率方法

    前几天有人问过我一个问题,就是两个嵌套for循环执行效率的问题,问有什么好的办法替换.当时我想了想,实在想不起来,哎,惭愧!!! 请教了答案,恍然大悟. 比如:两个list中分别装有相同的对象数据. list1中有3万条对象数据. list2中有2万条对象数据(但是对象中的某个属性变量为空).两个list中的id或者其他变量都一模一样.请用最快的方式找出list2中变量为空的那个对象,并且去list1中找出id相同的对象. 或者可以理解成,从list2中找出变量为空的,去list1中找出对应的对

  • Java如何通过线程解决生产者/消费者问题

    生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示 生产者向空间里存放数据,而消费者取用数据,如果不加以协调可能会出现以下情况: 存储空间已满,而生产者占用着它,消费者等着生产者让出空间从而去除产品,生产者等着消费者消费产品,从而向空间中添加产品.互相等待,从而发生死锁. 以下实例演示了如何通过线程解决生产者/消费者问题: /* author by javaidea.com ProducerConsumerTest.java */ public

  • mybatis 逆向生成后遵循java驼峰法则的解决

    当时用逆向生成后,实体类中的下划线都被去掉,这时只需要在sqlmap.xml中加以下代码即可.打开mybatis驼峰法则. <settings> <!-- 打印查询语句 --> <setting name="logImpl" value="STDOUT_LOGGING" /> <!-- 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典Java 属性名 aColumn 的类似映

  • Java程序设计之12个经典样例

    目录 例子1:字符型变量 例子2:数据类型转换 例子3:使用异或对字符进行加密和解密 例子4:短路逻辑或(||)和位运算(|)的区别 例子5:用if语句实现a.b.c的值按从小到大排序 例子6:用if语句判断给定的成绩是否及格 例子7:switch语句的使用 例子8:使用for循环,计算 5+ 55 + 555 +  ... 的前10项的和 例子9:使用while循环,计算 1 + 1/2! + 1/3! + 1/4! +   + 1/20! 的值 例子10:计算给定整数的各数字的和 例子11:

随机推荐