A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蓝之林 初级黑马   /  2015-9-27 00:49  /  3338 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
已知纸张厚度:0.01米,珠峰高度为8848米
  求:纸张折叠多少次能达到珠穆朗玛峰的高度

最佳答案

查看完整内容

class ZhuF { public static void main(String[]args){ float a = 0.01f; int count = 0; while(a

9 个回复

倒序浏览
class ZhuF {
        public static void main(String[]args){
                float a = 0.01f;
                int count = 0;
                while(a <= 8848){
                        a *=2;
                        count++;
               
                }
                System.out.println("次数为" + count);
        }

}

评分

参与人数 1黑马币 +1 收起 理由
蓝之林 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼上的同学回答的是错误的
回复 使用道具 举报
你要知道,0.01可是浮点型数据呀
回复 使用道具 举报

class ZhuF {
        public static void main(String[]args){
          double x=1;
          while(Math.pow(2,x)<=884800L)
          {
          x++;
          }
          System.out.println(x);   
        }

}
不过最好使用大数据来算
回复 使用道具 举报
int paper=1; // 俩数都乘100,省的一个是浮点,一个是正数
int zhumulangma=884800;
while(paper<=zhumulangma){
x++;
}
System.out.println(x);   
回复 使用道具 举报
  1. /*
  2. 已知纸张厚度:0.01米,珠峰高度为8848米
  3.   求:纸张折叠多少次能达到珠穆朗玛峰的高度
  4. 思路一:1.纸张每折叠一次,其厚度是原先厚度的2倍
  5.        2.以米为计量单位,那么厚度是浮点型变量,高度为整型变量
  6.        3.达到高度 等价于  纸张最终折叠后的厚度==珠峰高度
  7.           
  8. 步骤:1.定义变量 thickness 保存厚度值
  9.        2.定义 float thickness = 0.01
  10.          定义 常量 表示 珠峰高度 HEIGHT = 8848
  11.        3. 浮点型 ---> 整型的转换
  12.            A。为保证判断时类型合法,必须要用到转型
  13.        B。为了保证精度,考虑使用Math.round()函数

  14. 思路二:方程:0.01 * (2的n次方)= 8848
  15.              <==> (2的n次方)= 884800
  16.                          n = log2(884800)
  17. */

  18. public class ThickTest
  19. {
  20.         public static final int HEIGHT = 8848;
  21.         public static int getFoldCount(int height)
  22.         {
  23.                 /*
  24.                   折叠的次数为整数
  25.                 */
  26.                 int count = 0;
  27.                 float thickness = 0.01f;
  28.                 int temp = Math.round(thickness);
  29.                 while(true)
  30.                 {
  31.                    thickness = 2*thickness;
  32.                    count++;
  33.                    temp = Math.round(thickness);
  34.                    /*
  35.                       因为log2(884800) = 19.75,换句话说
  36.                           实际上,temp 不可能存在等于 HEIGHT的情况,
  37.                           所以应该在temp值第一次大于HEIGHT的时候,跳出循环
  38.                           结束计数。
  39.                    */
  40.                    if(temp > HEIGHT)
  41.                    {
  42.                           System.out.println("temp: "+temp);
  43.                           break;
  44.                    }
  45.                 }
  46.             return count;
  47.         }
  48.         public static void main(String[] args)
  49.         {
  50.                 System.out.println("需要折叠"+getFoldCount(HEIGHT)+"次");
  51.         }
  52. }
  53.          
复制代码

结果如下:

result.png (23.25 KB, 下载次数: 13)

result.png
回复 使用道具 举报
JYcainiao 来自手机 中级黑马 2015-9-29 14:47:31
8#
应该是小于8848吧,不能小于等于吧,假设结婚刚好是8848是不是还要折叠一次呢?
回复 使用道具 举报
上海0925马树忠 发表于 2015-9-30 22:18
今天刚学哎
class WhileDemo2
{

如此简单 - - ?。 。 。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马