在上一篇文章中提到了程序逻辑通过顺序、分支、循环三种结构来实现的,并介绍了分支结构的执行语句,那么今天这篇文章介绍实现程序逻辑的另一种结构——循环结构。
什么是循环结构
循环结构是指在程序设计语言中按照一定条件反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复执行的过程。
在上述定义中我们可以归纳出循环的两个要素即:循环体和循环条件。循环体就是那一组反复被执行的相同或相似的语句。循环条件,即继续执行循环的条件,某些情况下循环条件是以循环次数的方式体现。
现在知道了循环结构的两个要素,所以我们在程序设计中,如果需要多次重复执行一个或者多个任务时,考虑使用循环来解决。在使用循环来解决业务问题时我们要考虑如何来选择循环语句,我们常用到的循环语句包括for语句,while语句,do-while语句。下面我们就介绍一下如何选择合适的循环语句。
“当”循环
如果业务可以转换为“当…”这样的句式时,优先选择while语句来实现。
实例:
-一年存款利率为3%,本金10000,存款总额超过12000时,收益具体是多少。
分析:
-模板:“当”存款总额小于12000时;以3%的利率增长;
-条件:total<12000;
-代码:while(条件){total+=(total*0.03)}
While语句的执行逻辑及流程图
-计算boolean表达式的值
-如果值为true则执行语句块,语句块执行完后再次判断boolean表达式的值,如果为true则继续执行语句块,如此循环往复,直到boolean为false时退出while循环。
While(boolean表达式){ //boolean表达式的值为真时执行语句块,否则退出
语句块 //被重复执行的操作
}
While语句用于处理逻辑循环
int age=1
while(age<=100){
System.out.printIn(“马上有钱”);
age++;
}
System.out.printIn(“over”);
使用break退出循环:break在循环体中用于退出循环
int x=0;
while(x<10){
if(x==5){
break;
}
System.out.printIn(x);
x++;
} //输出的结果是0 1 2 3 4 ,当x==5时,退出循环。
“直到”循环
如果循环业务可以转换为“直到…”这样的句式时,优先选择do-while语句来实现。
实例:
-验证身份时必须提供密码并核对
分析:
-模板:获取密码,“直到”输入的值为123456
-条件:inputPwd!=123456
-代码:do{……}while(条件);
do-while语句的执行逻辑及流程图
-先执行语句块
-再计算boolean表达式的值,如果为true,再次执行语句块,如此循环,直到boolean表达式的值为false为止。
do{
语句块
}while(boolean表达式);//无论bpolean表达式的值是否为true,都先执行一次语句块
do while语句用于处理循环逻辑
int pwd;
do {
System.out.print(“请输入密码”);
pwd=scanner.nextInt();
}while(123!=pwd);
while和do-while的区别
-while循环先判断在执行
-do-while循环先执行一次,再判断
-当初始情况不满足循环条件时,while循环一次都不会执行;do-while循环不管任何情况都至少执行一次。
while和do-while语句的不同仅仅会体现在第一次就不满足条件的循环中,如果不是这样while和do-while可以互换。
固定次数循环
如果业务中可以获取到一个确切的循环次数考虑for循环。一般情况下for循环使用最多,对于for循环结构,一定要分析出解决业务的三个部分:循环变量初始状态,循环条件和循环变量的改变。
for语句的执行逻辑及流程图
for(表达式1;表达式2;表达式3){
语句块(循环体)
}
-计算表达式1的值;
-计算表达式2(表达式2为逻辑表达式)的值,如果为true则执行循环体,否则退出循环体;
-执行循环体
-执行表达式3;
-计算表达式2,如果为true则执行循环体,否则退出循环;
-如此循环往复,直到表达式2的值为false。
for语句用于实现固定次循环 (以累加为例,求1+2+3+…+100=?)
int sum=0;
for(int i=1;i<=100;i++){
sum+=i;
}
System.out.printIn(“1到100的和为:”+sum);
for语句三个表达式特殊用法
-表达式1位置内容为空时
int sum=0;
int i=1;
for(;i<=10;i++){
sum+=i;
}
System.out.printIn(“1到10的和为:”+sum);
-表达式3的位置为空时
int sum=0;
for(int i=1;i<=10;){
sum+=i;
i++;
}
System.out.printIn(“1到10的和为:”+sum);
-表达式1,2,3,位置内容均为空时
for( ; ; ){
Syetem.out.printIn(“我要学习……”)
} //死循环
-表达式1和表达式3位置内容的多样化
for(int i=1,j=6;i<=6;i+=2,j-=2){
System.out.print(“i,j=”+i+”,”+j);
}
输出的结果为:
i,j=1,6
i,j=3,4
i,j=5,2
for语句中的三个表达式中表达式1和表达式3可以使用逗号表达式,逗号表达式就是通过”,”运算符隔开的多个表达式组成的表达式,从左向右计算。
循环中使用break语句:
-break可用于循环语句或switch语句中;
-break用于循环,可使程序终止循环而执行循环后面的语句,常常与条件语句一起使用
int sum=0;
for(int i=1;i<=100;i++){
if(sum>=4000){
break;
}
sum+=i;
} //当总和大于等于4000时终止循环
循环中使用continue语句
-continue只能用于循环中,其作用为跳过循环体中剩余语句而执行下一次循环
int sum=0;
for(int i=1;i<=100;i++){
if(i%10==3){
continue;
}
sum+=i;
}
我们一共通过两篇文章介绍了程序逻辑中的分支结构和循环结构,由于顺序结构过于简单,在这里没有做介绍。衷心的希望您在阅读的时候能够提出宝贵的意见,使我们在编程的道路上一起进步,小编将不胜感激!