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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 悟中生有 中级黑马   /  2013-12-7 13:21  /  1000 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 悟中生有 于 2013-12-7 14:17 编辑

题目是:一张厚0.01m的纸,每折一次厚度增加2倍,求折几次后厚度会到达8848m(厚度不小于8848m)?
以下是我自己写的代码,请高手看看是否可行?

/**
要求:
一张厚0.01m的纸,每折一次厚度增加2倍,
求折几次后厚度会到达8848m(厚度不小于8848m)?
思路:
1,有一个未知数,两个变量,折的次数未知,纸的厚度在不断变化。
2,定义一个int型变量x初始化值为0代表折纸的次数,
3,运用for循环实现厚度的增加,循环内部定义一个double型变量(有小数存在)y,运用if语句判断y的值大于8848时,循环结束。
4,获取x的值得知折纸次数。
*/
class CiShu {
public static void main(String[] args) {
  int x = 0;                                                   //定义一个int型变量x
  for (double y = 0.01;y<=8848 ;y = y+y) //for循环体。
   {  
    if(y<=8848)                                        //当y的值大于8848时,循环结束。
     x++;                                                 //循环一次x的值自增一次。
  }
  System.out.println("x="+x);             //输出最终x的值既折纸的次数。
}
}


评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

5 个回复

倒序浏览
最后x的值是20就对了
回复 使用道具 举报
小痞痞 发表于 2013-12-7 13:52
最后x的值是20就对了

那就是对了,嘿嘿! 多谢指教!:)
回复 使用道具 举报
悟中生有 发表于 2013-12-7 14:05
那就是对了,嘿嘿! 多谢指教!

不客气的啊
回复 使用道具 举报
  1.                 int s =0;
  2.                 for(double x=0.01;x<8848;x=x*2){
  3.                         s++;
  4.                 }
  5.                 System.out.println(s);
复制代码
回复 使用道具 举报 1 0

这个好简洁,,多谢指教:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马