流程控制语句:可以控制程序的执行流程。
分类:
顺序结构
选择结构
循环结构
循环结构
循环语句:for循环,while循环,do...while循环。
for循环
for循环格式:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程:
A:执行初始化语句
B:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
C:执行循环体语句;
D:执行控制条件语句
E:回到B继续。
注意事项:
A:判断条件语句无论简单还是复杂结果是boolean类型。
B:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
C:一般来说:有左大括号就没有分号,有分号就没有左大括号
练习: |
请在控制台输出10次"HelloWorld" |
例: |
for(intx=1;x<=10;x++) { System.out.println("HelloWorld"); } |
练习: |
求出1-10之间数据之和 |
例: |
//定义第一个加数 int sum = 0; for(int x=1; x<=10; x++) { sum = sum + x; } System.out.println("1-10之和是:"+sum); |
练习:
练习1: |
求1-100之和 |
例: |
//定义第一个加数 int sum = 0; for(int x=1; x<=100; x++) { sum += x; } System.out.println("1-100之和是:"+sum); |
练习2: |
求出1-100之间偶数和 |
例: |
//定义第一个加数 int sum2 = 0; for(intx=1; x<=100;x++) { if(x%2 == 0) { sum2 += x; } } System.out.println("1-100偶数之和是:"+sum2); |
练习3: |
求出1-100之间奇数和 |
例: |
//定义第一个加数 int sum2 = 0; for(intx=1; x<=100;x++) { if(x%2 != 0) { sum2 += x; } } System.out.println("1-100奇数之和是:"+sum2); |
练习4: |
求5的阶乘。 |
例: |
//定义最终结果变量 int jc = 1; for(intx=2; x<=5; x++) { jc *=x; } System.out.println("1-5的阶乘是:"+jc); |
练习5: |
在控制台输出所有的”水仙花数” (所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身,如:153) |
例: |
//三位数其实是告诉了我们范围。 for(intx=100; x<1000;x++) { int ge = x%10; int shi = x/10%10; int bai = x/10/10%10;
//让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较 if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) { //如果相同,就把该数据在控制台输出。 System.out.println(x); } } |
练习6: |
统计”水仙花数”共有多少个 |
例: |
//定义统计变量,初始化值是0 int count = 0; //三位数告诉了我们范围,用for循环就可以搞定 for(intx=100; x<1000;x++) { //获取每一个三位数的个,十,百的数据 int ge = x%10; int shi = x/10%10; int bai = x/10/10%10; //按照要求进行判断 if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) { //如果满足要求就计数。 count++; } } System.out.println("水仙花数共有"+count+"个"); |
练习7: |
请在控制台输出满足如下条件的五位数 个位等于万位 十位等于千位 个位+十位+千位+万位=百位 |
例: |
//五位数就告诉了我们范围。 for(intx=10000; x<100000;x++) { //分解每一个五位数的个,十,百,千,万位上的数据 int ge = x%10; int shi = x/10%10; int bai = x/10/10%10; int qian = x/10/10/10%10; int wan = x/10/10/10/10%10; //按照要求进行判断即可 if((ge==wan) && (shi==qian) && (ge+shi+qian+wan==bai)) { System.out.println(x); } } |
练习8: |
请统计1-1000之间同时满足如下条件的数据有多少个: 对3整除余2 对5整除余3 对7整除余2 |
例: |
//定义统计变量,初始化值是0 int count = 0; //1-1000之间是一个范围,用for很容易就可以实现。 for(intx=1; x<=1000;x++) { if(x%3==2 &&x%5==3 && x%7==2) { count++; System.out.println(x); } } //输出数据 System.out.println("满足这样条件的数据共有:"+count+"个");
|
while循环
while循环的基本格式:
while(判断条件语句) {
循环体语句;
}
扩展格式:
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
通过这个格式,我们就可以看到其实和for循环是差不多的。
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
练习1: |
输出10次"HelloWorld" |
例1: |
//for语句版 for(intx=0; x<10; x++) { System.out.println("HelloWorld"); } |
例2: |
//while语句版 int x=0; while(x<10) { System.out.println("HelloWorld"); x++; } |
练习2: |
求出1-100之和 |
例1: |
//for语句版 int sum = 0; for(intx=1; x<=100;x++) { sum+=x; } System.out.println("sum:"+sum); |
例2: |
//while语句版 int sum2 = 0; int y=1; while(y<=100) { sum2+=y; y++; } System.out.println("sum2:"+sum2); |
练习3: |
100~1000统计水仙花数有多少个 |
例1: |
//for语句版 int count = 0; for(intx=100; x<1000;x++) { int ge = x%10; int shi = x/10%10; int bai = x/10/10%10; if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x) { count++; } } System.out.println("count:"+count); |
例2: |
//while语句版 int count2 = 0; int y = 100; while(y<1000) { int ge = y%10; int shi = y/10%10; int bai = y/10/10%10; if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == y) { count2++; } y++; } System.out.println("count2:"+count2); |
while循环和for循环的区别?
使用区别:如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用for循环。
因为变量及早的从内存中消失,可以提高内存的使用效率。
其实还有一种场景的理解:
如果是一个范围的,用for循环非常明确。
如果是不明确要做多少次,用while循环较为合适。
举例:吃葡萄。
//for循环实现 for(intx=0; x<10; x++) { System.out.println("学习Java技术哪家强,中国北京传智播客"); } //这里不能在继续访问了x //System.out.println(x); |
//while循环实现 int y = 0; while(y<10) { System.out.println("学习Java技术哪家强,中国北京传智播客"); y++; } //这里是可以继续访问的y System.out.println(y); |
练习: |
我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度? |
例: |
//定义一个统计变量,默认值是0 int count = 0; //最高山峰是珠穆朗玛峰:8848m这是最终的厚度 //我现在有一张足够大的纸张,厚度为:0.01m这是初始厚度 //为了简单,我把0.01变成1,同理8848就变成了884800 int end = 884800; int start = 1; while(start<end) { //只要每次变化的厚度没有超过珠穆朗玛峰的高度,就折叠,统计变量++ count++; //折叠一次有什么变化呢?就是厚度是以前的2倍。 start *= 2; System.out.println("第"+count+"次厚度是"+start); } //输出统计变量。 System.out.println("要叠"+count+"次"); |
do...while循环
do...while循环的基本格式:
do{
循环体语句;
}while(判断条件语句);
扩展格式;
初始化语句;
do{
循环体语句;
控制条件语句;
}while(判断条件语句
示例1:输出10次HelloWorld
int x = 0; do { System.out.println("HelloWorld"); x++; }while(x<10); |
示例2:求和1-100
int sum = 0; int a = 1; do { sum += a; a++; }while(a<=100); |
循环语句的区别:
do...while循环至少执行一次循环体。
而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
那么,我们一般使用哪种循环呢?
优先考虑for,其次考虑while,最后考虑do...while
注意死循环:
A:一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。
B:两种最简单的死循环格式
while(true){...}
for(;;){...}