目录
概述
1996 年,计算机科学家 Bohm 和 Jacopini 证明了:任何简单或复杂的算法都可以由顺序结构、分支结构和循环结构这三种基本结构组合而成。
它们的共同点是都包含一个入口和一个出口,它们的每个代码都有机会被执行,不会出现死循环。
顺序结构
顺序结构是一种基本的控制结构,它按照语句出现的顺序执行操作。
分支结构
分支结构又被称为选择结构,根据条件成立与否来执行操作。
循环结构
循环结构是一种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。
一、循环语句
1.1 简介
循环语句功能:
在循环条件满足的情况下,反复执行特定代码。
循环语句分类:
- for 循环
- while 循环
- do/while 循环
1.2 while 循环
符合条件,循环继续执行;否则,循环退出。
特点:先判断,再执行。
语法:
while(条件表达式){
//语句块;
}
实现示例:
录入班级人数和学员成绩,计算班级学员的平均成绩。
使用 while 循环的步骤:
- 分析循环条件和循环操作
- 套用 while 语法写出代码
- 检查循环能否能够退出
int sum = 0;
int score = 0;
int avg = 0;
int studentNum = 20;
while(i<=studentNum){
System.out.print("请输入第"+i+"位同学的成绩: ");
score = input.nextInt();
sum = sum+score;
i++;
}
avg = sum/stuNum;
1.3 do-while 循环
先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出。
特点:先执行,再判断。
语法:
do{
循环操作
}while(条件表达式);
Q:while 循环和 do-while 循环的区别?
- while: 先判断条件,如果条件满足,再执行循环操作。
- do while: 先执行一遍循环操作,然而再判读条件,如果条件满足,继续执行循环操作。
1.4 for 循环
语法:
for(初始化参数;判断条件;更新循环变量){
循环体;
}
应用举例:
public class ForLoop{
public static void main(String[] args){
int result = 0;
for(int i=1;i<=100;i++){
result +=i;
}
System.out.println("result="+result)
}
}
二、分支结构
2.1 if 条件语句
- if 条件结构是根据条件判断之后再做处理
- if(条件语句){…}
- if(条件语句){…}else if(条件语句){…}
- if(条件语句){…}else if(条件语句){…}else{…}
例子:用户输入学生成绩,判断成绩是否及格,判断条件为 优良:> 90、良好:81-90、中:60-80、不及格:< 60
import java.util.Scanner;
public class Demo4{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入成绩: ");
int scores = input.nextInt();
//91优 81-90良 60-80中 60差
if(score >= 91){
System.out.println("您的成绩是优秀!继续加油哦!")
}
}
}
2.2 switch 语句
switch(表达式){
case 取值1:语句块1;break;
case 取值n:语句块n;break;
default:语句块n+1;break;
}
switch 语句有关规则:
- 表达式的返回值必须是下述几种类型之一:int,byte,char,short,String;
- case 子句中的取值必须是常量,且所有 case 子句中的取值应是不同的;
- default 子句是可选的;
- break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;如果 case 后面没有写break
则直接往下面执行! - Case 后面的执行体可写{} 也可以不写{}。
例题:多分支月份输出天数(充分利用语句特性)
import java.util.Scanner;
public class Demo6{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out,println("请输入月份:");
int month = input.nextInt();
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(month+"月共有31天");
break;
case 2:
System.out.println(month+"月共有28天");
break;
default:
System.out.println("友情提示,您输入有误!");
break;
}
}
}
总结
循环结构:
同一件事反复做,反复执行同一片代码;
循环的构成:
初始化语句
循环进口(条件)
循环体
循环增量
有三种 循环结构:
for 循环:
语法格式:
for(初始化语句;条件;步进表达式){
循环体
}
执行流程:
- 初始化语句
- 判断条件,如果条件为真;则进入第三步,条件为假则进入第五步
- 执行循环体
- 执行步进表达式,进入第二步
- 结束循环
while 循环:
语法格式:
初始化语句
while(条件){
循环体
步进语句
}
执行流程:
- 初始化语句;
- 判断条件,如果条件为真,则进入第三步,如果条件为假,则进入第五步;
- 执行循环体;
- 执行步进语句,再进入第二步;
- 结束循环
do-while 循环
语法格式:
初始化语句
do{
循环体
步进语句
}while(条件)
执行流程:
- 初始化语句
- 执行循环体
- 执行步进语句
- 判断条件,如果条件为真,进入第2步,否则进入第5步
- 结束循环
三种循环的区别:
虽然可以完成同样的功能,但是还是有小区别:
do-while 循环至少会执行一次循环体。
for 循环和 while 循环只有在条件成立的时候才会去执行循环体。
for 循环语句和 while 循环语句的小区别:
使用区别:控制条件语句所控制的那个变量,在 for 循环结束后,就不能再被访问到了,而 while 循环结束还可以继续使用,如果你想继续使用,就用 while,否则推荐使用 for。原因是 for 循环结束,该变量就从内存中消失,能够提高内存的使用效率。
循环使用 推荐 for-- while-- do–while
跳转语句可以控制循环的执行!
有2种:
- break:在循环中使用的时候,表示结束当前循环; 在 switch 语句中使用表示跳出当前的 switch 结构。
- continue:在循环中使用,表示结束本次循环,进入下一次循环,跳转语句,脱离循环没有意义。