Java基础五
i1、While循环
2、do ... While循环
3、For循环
一、While
/*
while循环
语句格式:
while(boolean表达式){
语句块;
}
执行顺序:
先判断boolean表达式的值,如果是true。就执行语句块。
再判断boolean表达式的值,如果是true。就执行语句块。
再判断boolean表达式的值,如果是true。就执行语句块。
……
直到boolean表达式为false的时候,就结束了。
*/
练习题系列:
打印五次Hello World
打印输出1~10
求1~10的阶乘
求100以内偶数的和
二、do ... While
/*
do-while的格式:
do{
语句块;
}while(boolean表达式);
执行顺序:
执行语句块,然后判断boolean表达式,如果为true。
继续执行语句块,然后判断boolean表达式,如果为true。
继续执行语句块,然后判断boolean表达式,如果为true。
……
继续执行语句块,然后判断boolean表达式,如果为false。停止。
*/
练习题:
用do-while打印三次helloworld
用do...while打印100以内所有的奇数
打印100以内能被3整除,但是不能被5整除的数
//总结:
//while和do-while的区别:
//while先执行条件,然后执行循环体
//do-while先执行循环体,后判断条件。
//当第一次就不满足循环条件的情况下,while一次都不能执行,而do-while会执行一次。
三、For循环
/*
for循环
格式:
for(循环变量初始值设定;循环条件boolean值;每次循环之后执行的语句){
循环体;
}
执行过程:
首先计算初始值设定。
然后计算boolean值,如果为true,就执行循环体一次,然后执行“每次循环之后执行的语句”。
然后计算boolean值,如果为true,就执行循环体一次,然后执行“每次循环之后执行的语句”。
然后计算boolean值,如果为true,就执行循环体一次,然后执行“每次循环之后执行的语句”。
……
然后计算boolean值,如果为false,就停下来了。
*/
练习题:
打印三个Hello World:
重重瞅瞅这个题的思路
首先打印出符合条件的内容,然后加入count计数,满6就换行:下面时复杂方法
接着提高效率:
一个*****题:
答案:
首先记得i++一定是正数吗?
这里用到了 >>>:无符号右移:无论最高位是0还是1,左边都补齐0.里面的思考
i++算到最后为
01111111 11111111 11111111 11111111 为正数,补码和源码一样
如果再加一得:
11111111 11111111 11111111 11111111 为负数
说真的这个题真没意思!!!我来验证一下:
首先由上面的正数加一可以变成负数可得:2147483647+1=-2147483648
由此可知:2147483647+k+1=-(2147483648-k)
所以题目中是i++,计算的是3*i;也就是负数中最大三倍的(2147483648-k)。
然后再一个一个的加一;
直到:如下:
即:三倍的-1431655763,int强制转换是等于7的!!!!!!!!
四、For For循环,即嵌套循环
首先用 * 输入一个矩阵:
然后输入由 * 组成的三角形:
99乘法表:
重点来,打印菱形:
这个需要加点数学知识,如图:
这里以4为例:
要打印菱形,就是从上一个题目中,打印矩形星星中切除一部分星星。而如何切除呢?
就是从上图坐标中范围取值切除,每个星星都会对应一个横竖坐标值,即X、Y;也就是X、Y的不同取值范围中是显示空格还是显示星星的问题。
由上面分析可以得到for循环中的条件语句,代码就可以敲了。
这个是边长为4的菱形,输出“*”(星星)还是输出“ ”(空格)根据范围的变化而变化。
上面那个逻辑性不好,不算打印正确,下面才是真正的抠图。
其实都可以。
空心菱形:
break 和continue
标签:任意定义一个标识符在一个for循环前【loop:for(){}】,在break等后面加上标签【break loop;】,即表示指定这个位置的for循环break.
For循环练习题:
//练习一:最大公约数与最小公倍数。
首先求最大公约数有两种方法:
1、更相减损术:
以8和10 为例:大的减小的,直到两数相等
eg:10-8=2 8-2=6 6-2=4 4-2=2 2==2 于是最大公约数就是2.
最小公倍数就是两书相乘后除以最大公约数。
a,b,c,d;初始这三个数,a,b代表要计算的,c代表中间转换需求值,d最重要,一开始就要用d表示出两数的乘积!!!!循环后a,b都会发生变化,如下程序:
2、辗转相除法
实例:以8 和 10 为例:
10 / 8 = 1 .....2 8 / 2 = 4 .......0 前面中得到0的那一次,除数就是最大公约数。
//练习二:水仙花数
//练习三:百钱百鸡问题
优化: