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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhubingg 中级黑马   /  2015-4-29 21:37  /  11730 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天上课学习了for循环和while循环的知识
在课堂WhileTest 中刘意老师讲到了珠穆朗玛峰用while循环记录count的方法/*
喜马拉雅山高8848米 一张纸张厚0.01米,假设可以无限折叠,需要折叠多少次可以达到喜马拉雅山的高度
折叠的次数未知可以用到变量定义,
需要重复折叠这个动作用到循环 这里用到循环 用while做
*/

class  WhileDemo1
{
        public static void main(String[] args)
        {
                int count = 0 ;
                int start = 1 ;// 把0.01变成1 提升100倍
                int result = 884800;//这个也需要提升100倍
                while (start <=result)
                {
                        start*=2;
                        count++;
                }
                System.out.println(count);//输出结果是20
        }
}

后来我想练习用for循环解决这个问题 用for语句写了,然后输出结果为19?见截图
求大家帮忙分析下?


19 个回复

倒序浏览
判断语句应该为count++吧
回复 使用道具 举报
总感觉怪怪的
回复 使用道具 举报

wo我也感觉怪怪的 和while 语句都一样
回复 使用道具 举报
E:\study_heima\gai.png
回复 使用道具 举报
start++不应该要

gai.png (83.15 KB, 下载次数: 109)

gai.png
回复 使用道具 举报
你已经start*=2;了为啥还start++????
回复 使用道具 举报
exist 中级黑马 2015-4-29 22:15:12
8#
吧start++改成start*=2就ok了
回复 使用道具 举报

把for循环中的控制条件(start++)改成(start*=2),并且将for循环大括号内的(start*=2)删除。

点评

嗯嗯 改了确实可以运行了 谢了!  发表于 2015-5-1 00:04
回复 使用道具 举报 1 0
楼上说的对!
回复 使用道具 举报
蓝七 发表于 2015-4-29 21:46
判断语句应该为count++吧

判断语句是应该是 count*=2  我想明白了 谢谢回帖
回复 使用道具 举报

嗯嗯  知道了 ,后来自己想明白了  count++的就话 就是3的二次方 后面的基数就都变了
回复 使用道具 举报
日出pk朝阳 发表于 2015-4-29 22:06
你已经start*=2;了为啥还start++????

嗯嗯  刚学容易犯错啊  :L
回复 使用道具 举报
stsrt++有问题,叠层是乘以2不是自身加1
回复 使用道具 举报
li514620797 发表于 2015-5-1 09:48
stsrt++有问题,叠层是乘以2不是自身加1

嗯嗯  已经知道了 问题解决了
回复 使用道具 举报
新人来看您们的解决思路的!
回复 使用道具 举报
public static void main(String[] args) {
               
                double x = 0.01;
                int count = 0;
                while (x<=8848){
                        x+=x;
                        count++;
                }
                System.out.println("折叠次数:"+count);
        }
这样更简单
回复 使用道具 举报 1 0
又涨知识了
回复 使用道具 举报
兄弟,你折完纸是乘2的高度啊 不是加1...........
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马