Java基础-程序流程控制第二弹(循环结构)
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
流程控制有三种基本结构:顺序结构,选择结构和循环结构。一个脚本就是顺序结构执行的,选择结构就是我之前分享的几篇学习笔记,比如if语句和switch语句,而循环结构就是本篇博客要讲的重中之重。
一.循环结构概述
循环语句可以在满足循环条件的情况下,反复执行某一段代码,被反复执行的代码称为循环体,需要在适当的时候,把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环。完整的循环应该包含以下四个部分:
1>.初始化语句:初始化工作,在循环体开始之前执行;
2>.循环条件:一个boolean表达式,决定是否执行循环体;
3>.循环体:反复执行的部分;
4>.迭代语句:在循环体执行完之后执行,然后再去判断循环条件,一般用来控制循环条件中的变量,使循环在合适的时候结束;
二.while循环
1>.while语句格式
[初始化部分]
while(条件表达式){
循环体语句;
[循环变量控制语句]
}
........//其它代码、
2>.执行流程
a>.执行初始化语句(如果有的话);
b>.判断条件表达式真假:如果真,往下执行;如果假,结束循环;
c>.执行循环体语句;
d>.执行循环变量控制语句(如果有的话);
e>.返回第2步,重复执行,直到条件为假,结束循环;
3>.案例展示
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class WhileDome{ 8 public static void main(String[] args){ 9 /* 10 遍历1-100之间所有的数,打印能被3整除的数,每行打印5个。 11 */ 12 13 int counts = 0; //计数器变量 14 int num = 1; //遍历100之内所有的数,因此我们需要制定起始位置。 15 16 while( num <= 100 ){ 17 if( num % 3 == 0 ){ //每个这个数能被3整除就打印 18 System.out.print( num + " " ); 19 counts++; //每打印一个就需要进计数,当计数器是5的倍数是就需要换行 20 if( counts % 5 == 0 ){ //判断是否换行 21 System.out.println(); 22 } 23 } 24 num++; 25 } 26 } 27 }
三.do...while循环
1>.do...while格式
[初始化部分]
do {
循环体语句;
[循环变量控制语句]
}while(条件表达式);
2>.执行流程
特点:循环体至少会被执行一次
a>.执行初始化部分(如果有的话);
b>.执行循环体语句;
c>.执行循环变量控制语句(如果有的话);
d>.判断条件表达式,如果为真,返回第2步;如果假,结束循环;
3>.案例展示
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class DoWhileDome{ 8 public static void main(String[] args){ 9 /* 10 遍历1-100之间所有的数,打印能被7整除的数,每行打印5个。 11 */ 12 13 int num = 1; 14 int counts = 0; 15 16 do { 17 if ( num % 7 == 0 ){ 18 System.out.print( num + " " ); 19 counts++; 20 if( counts % 5 == 0 ){ 21 System.out.println(); 22 } 23 } 24 num++; 25 }while( num <= 100 ); 26 } 27 }
四.for循环
1>.for循环格式
for(初始化表达式;条件表达式;循环变量控制语句){
循环体语句;
}
2.执行流程
a>.执行初始化表达式,只执行一次,通常是定义循环变量语句;
b>.判断循环条件:为真就往下执行;为假就结束循环;
c>.执行循环体语句;
d>.执行循环变量控制语句,一般是循环变量的自增或自减;
e>.回到第2步,重复这个过程,直到为假时结束;
3>.案例展示
a>.判断1~100的奇数和偶数。
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class ForDome{ 8 public static void main(String[] args){ 9 System.out.println("以下打印的是奇数"); 10 for( int i = 1; i <= 100; i++ ){ 11 if( i % 2 != 0 ){ 12 System.out.println(i); 13 } 14 } 15 16 System.out.println("以下打印的是偶数"); 17 for( int i = 0; i <= 100; i+=2 ){ 18 System.out.println(i); 19 } 20 } 21 }
b>.求和案例(用到了可变长形式参数)
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 /* 10 * 参数个数不确定的形参定义 11 * public static int add(int... args){...} 12 */ 13 public class VariableArgsDemo { 14 15 public static void main(String[] args) { 16 int sum = add2(1,2,3,4,5); 17 System.out.println(sum); 18 } 19 20 //可变参数之前,可以有其它的形参,但是后边不能再有形参定义 21 public static int add2(int a,int... args){ 22 int sum = a; 23 for (int i = 0; i < args.length; i++) { 24 sum += args[i]; 25 } 26 return sum; 27 } 28 29 //变长参数方法 30 public static int add(int... args){ 31 int sum = 0; 32 for (int i : args) { 33 sum += i; 34 } 35 return sum; 36 } 37 } 38 39 40 41 /* 42 以上代码执行结果如下: 43 15 44 */
五.嵌套循环
其实大家听了这个词就应该是啥意思,就是循环里面嵌套循环,比如我们小学铅笔盒上的“九九乘法表”还记得吗?我们可以通过上面三种循环任何一种嵌套方式实现,而且可以相互嵌套。话不多说,我们一起开看一下我写的代码。
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 8 /* 9 10 */ 11 12 public class multiplicationTable{ 13 public static void main(String[] args){ 14 /* 15 //99乘法表姿势一: 16 for(int i=1;i<=9;i++){ 17 for (int j = 1;j <= i;j++){ 18 System.out.print(i + "x" + j + "=" + i * j + " "); 19 } 20 System.out.println(); 21 } 22 */ 23 24 25 26 /* 27 //99乘法表姿势二: 28 int a = 1; 29 while(a < 10){ //控制行数 30 // System.out.println(a); 31 int b = 1; 32 while(b <= a){ //控制每行的内容 33 System.out.print(a + "x" + b + "=" + a * b + " "); 34 b++; 35 } 36 System.out.println(); 37 a++; 38 } 39 */ 40 41 ////99乘法表姿势三: 42 int x = 1; 43 do{ 44 // System.out.print(x + "x" + y + "=" + x * y + " "); 45 int y = 1; 46 do{ 47 System.out.print(y + "x" + x + "=" + y * x + " "); 48 y++; 49 }while(y <= x); 50 System.out.println(); 51 x++; 52 }while(x < 10); 53 54 55 } 56 }