Java基础--单重循环操作题(例题说明易错点)

问:一张纸的厚度大约是0.08mm,对折多少次之后能达到或超过珠穆朗玛峰的高度(8848.13米)

这里需要我们求的是对折的次数,那 在循环次数不确定的情况,通常选用while或do-while循环

我们选取while进行操作,已知高度和厚度,可以像下图中的high一样进行一下定义,也可以直接像厚度一样直接输入数值,影响不大。

最重要的是思路,很明显这题是以        比较对折后的厚度和山的高度        作为循环条件的,接着咱们只要        列出对折后的厚度的运算公式        以及        循环的条件改变规律        就可以了

注意:如果公式这里你也和我一样采用的  幂运算,需要注意的就是不能直接输入2^n,而是要用Math.pow(2,n)表示!(Java的魅力)

 最后!循环的条件改变规律    这里我们也需要留意一下,因为我们是先  判断是否满足循环条件再进行的改变,所以最后所求得到的数值是        改变后的但没有执行操作的

因此,要把最后的结果再减去一次条件改变的数值,咱们这里是减去1,一定不要漏了这一步!

* 幂运算的公式:Math.pow(底数,幂)

问:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?                

程序分析:在10万以内判断,另外由这个数的开方数自乘得到平方数,进行比较

在循环次数确定的时候,通常选用for循环

有题目中可以知道循环的这个数的范围是在0~10万,所以我们for循环里面,就让这个数的初始值为0,范围就是小于等于10万,每次自增

紧接着我们就可以列出下面的两行等式,也就是说这个数加上100以及268之后,给它们分别开根号,得到值的表达式

后面我们需要再用到选择结构if,条件为给它们开根号后得到的值都为整数

则输出该数

 

注意:因为我们给一个数开根号后该数不一定为整数所以要先用double,然后我们再在if里面加上条件,如果得到的数为整数的话,则巴拉巴拉

小括号里加int就可以进行强制类型转换了!

* 这里又学到了java里的一个新表达式:

给一个数开根号:Math.sqrt(i)