从零开始学Java【09】
从零开始学Java【09】
学习视频:https://www.bilibili.com/video/BV12J41137hu?p=38
循环结构
while循环

需要循环停下来,可以使用break或者continue语句。
例子:输出1~100

i<100时持续循环,i>100停止循环
例子:1+2+3+...+100

do while循环

例子:while和do...while的区别

可以看到,在while循环体里面,由于不满足条件,没有执行循环体,而do...while循环体,则因为先执行了一次,a变成了1,到后面判定的时候不满足条件,后则跳出了do...while循环体。
for循环

for循环快捷写成:100.for,则有两种循环方式,一种i++,一种i--


注意事项:

第一步先检查初始化。初始化可以是空语句。
第二步开始检查布尔表达式 (如图上i<100),true则执行,false则跳出循环
第三步,当执行完一次循环后,自动更新迭代因子,即i++或者i--
练习1 计算0到100之间的奇数和及偶数和

技巧:通过取模来分辨奇偶,for中嵌套if语句可以实现奇偶分离
练习2 用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个

技巧:1.通过取模5来分辨可以被5整除的数,作为一级过滤。
2.通过对比5*3=15,可以观察,每行三个数的最后一个数恰好是15的整数倍(也可以这么理解:换行的标志是最后一个数既是5的倍数,也是3的倍数,才满足换行的要求),所以通过15来进行二级过滤,并单独成一行
代码解析:1.println函数是输出完换行
2.print函数是输出完不换行
3./t,/n都是转义字符,其中/t表示按一次table键,/n表示换行(具体可查询转义字符表查询)
练习3 打印九九乘法表
这个练习有难度,思路如下
首先,需要达到如下结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
那么,初步思路为:用两个for循环进行嵌套,输出如下格式
for (int i = 1; i <=9; i++) {
for (int j = 1; j <= 9; j++) {
}
System.out.println();//在每个单个数字结束后换行,比如第一行的
}
接着填充内容,观察可得,填入语句: System.out.print(i + " * "+j+"="+(i * j)+"\t");//\t为table按键
for (int i = 1; i <=9; i++) {
for (int j = 1; j <= 9; j++) {
System.out.print(i + "*"+j+"="+(i*j)+"\t");//\t为table按键
}
}
该结果为:
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2*1=2...............................
观察发现,我们平时念口诀的时候,是习惯小的数放前边,大的数放后边,且由于需要改掉重复项,比如1 * 9,和9 * 1就是重复项
所以改进思路:外层for循环不变,内层for循环,把参数j <= 9,换成j <= i,且在表达式System.out.print中,i和j的输出位置变换一下
则代码改进如下:
for (int i = 1; i <=9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*"+i+"="+(i*j)+"\t");
}
}
结果为:
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25.........
可以发现,每一个乘法都是前边小,后边大,满足了需求,可是并没有按规律顺序输出,所以现在考虑把换行添加进最外层for循环,代码如下:
for (int i = 1; i <=9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*"+i+"="+(i*j)+"\t");
}
System.out.println();
}
结果为:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
达成了目标。
总结步骤:
①首先要有个总体的思路,用两个for循环来进行操作。
②根据输出的样式来写出for循环内的语句:
System.out.print(i + "*"+j+"="+(i*j)+"\t");
③根据观察,小数在前,大数在后,所以更改for内循环中的j<=i,同时也把System.out.print里面的变量也换一下。
④由于 小数*大数,所以每次 小数==大数的时候,就需要换行了,即第二个for循环结束了之后需要换行,所以在第一个for循环添加换行,即:
System.out.println();
则完整输出九九乘法表


浙公网安备 33010602011771号