7 程序流程控制

程序流程控制介绍

1. 在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。

1)顺序控制
2)分支控制
3)循环控制

2. 顺序控制

顺序控制介绍
程序从上到下逐行地执行,中间没有任何判断和跳转。
顺序控制举例和注意事项
Java中定义成员变量时采用合法的前向引用。如:

public class Test{
        int num1 = 12;
        int num2 = num1 + 2;
}

错误形式:

public class Test{
       int num2 = num1 + 2int num1 = 12;

顺序控制的流程图
在这里插入图片描述

2. 分支控制if-else

分支控制if-else介绍

让程序有选择的的执行,分支控制有三种:
1)单分支
2)双分支
3)多分支

单分支

基本语法

if(条件表达式){
	执行代码块;
}

说明:如果条件表达式为true , 则执行 代码块, 如果为false ,就不执行代码块。

案例说明:
编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出 “你年龄大于18,要对自己的行为负责!”

import java.util.*;
public class IfDemo {
	public static void main(String[] args) { //输入快捷键 ctrl + ], 能定位对应的}
		//编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出 “你年龄大于18,要
		//对自己的行为负责!”	
		//1.创建Scanner对象
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入age");
		short age = myScanner.nextShort();
		if(age > 18 ) {
			System.out.println("你年龄大于18,要对自己的行为负责!");
		}
	}
}
单分支的流程控制图

在这里插入图片描述

双分支

基本语法

 if(条件表达式){
		执行代码块1;
  }
 else{
		执行代码块2;
  }

说明:如果条件表达式为true, 则执行代码块1, 否则,执行代码块2
案例演示
编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出 “你年龄大于18,要对自己的行为负责!”。否则 ,输出”你的年龄不大这次放过你了.”

扫描二维码关注公众号,回复: 8830352 查看本文章
short age2 = 15;
if (age2 > 18) {
	System.out.println("你年龄大于18,要对自己的行为负责!");
} else {
	System.out.println("你的年龄不大这次放过你了~");
}

双分支对应的流程图
在这里插入图片描述

多分支

基本语法

 if(条件表达式1){
执行代码块1;
    }
    else if (条件表达式2){
执行代码块2;
    }
     ……
     else{
执行代码块n;
     }

多分支的流程图(重要!)
在这里插入图片描述
说明:当条件表达式1成立时,即执行代码块1,如果表达式1不成立,才去判断表达式2是否成立,如果表达式2成立,就执行代码块2,以此类推,如果所有的表达式都不成立,则执行 else 的代码块,注意,只能有一个执行入口。

案例演示
请大家看个案例[IfDemo3.java]:
岳小鹏参加Java考试,他和父亲岳不群达成承诺:
如果:
1)成绩为100分时,奖励一辆BMW;
2)成绩为(80,99]时,奖励一台iphone7plus;
3)当成绩为[60,80]时,奖励一个 iPad;
4)其它时,什么奖励也没有。
5)请从键盘输入岳小鹏的期末成绩,并加以判断

import java.util.Scanner;
public class IfElses {
	public static void main(String[] args) {
		/*
		请大家看个案例[IfDemo3.java]:

	岳小鹏参加Java考试,他和父亲岳不群达成承诺:
	如果:
	成绩为100分时,奖励一辆BMW; 99.7
	成绩为(80,100)时,奖励一台iphone7plus;
	当成绩为[60,80]时,奖励一个 iPad;
	其它时,什么奖励也没有。
	请从键盘输入岳小鹏的期末成绩,并加以判断

	思路分析
	1. 因为情况很多,因此需要使用多分支
	2. 定义一个变量,来保存成绩 javaScore
	3. 需要使用 Scanner 来接收用户的输入
    代码实现
		*/
		
		//创建一个 Scanner 实例(对象)
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入java成绩");
		float javaScore = scanner.nextFloat();
		
		//多分支的判断
		if (javaScore == 100) {
			System.out.println("奖励一辆BMW , 虽然是模型~");
		} else if ( javaScore > 80 && javaScore < 100 ) {
			System.out.println("奖励一台iphone7plus , 虽然是纸盒子~");
		} else if ( javaScore >= 60 && javaScore <= 80 ) {
			System.out.println("奖励一个 iPad , 虽然是图片..");
		} else {
			System.out.println("什么奖励也没有");
		}

		//第二种写法,更加简洁
		//注意,多分支只会有一个入口.
		//多分支的判断
		if (javaScore >= 100) {  // 100
			System.out.println("奖励一辆BMW , 虽然是模型~");
		} else if ( javaScore > 80  ) {
			System.out.println("奖励一台iphone7plus , 虽然是纸盒子~");
		} else if ( javaScore >= 60  ) {
			System.out.println("奖励一个 iPad , 虽然是图片..");
		} else {
			System.out.println("什么奖励也没有");
		}
	}
}
嵌套分支

基本介绍
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支,外面的分支结构称为外层分支。一般说,嵌套分支不要超过3层。

基本语法

if(){
    if(){
		if-else{
		}
     }else{
		if-else{
		}
     }
 }

3 switch分支结构

基本语法
在这里插入图片描述
对上面的语法说明
1)switch 是一个关键字,规定好的,表示是一个swich 语句
2)case 常量1: 表示如果表达式的值和常量一样,则匹配成功,就会执行语句块1
3)break 是一个关键字,规定好,表示如果执行到break ,就退出整个swtich 语句
4)如果没有break ,就会直接执行下面的语句块,叫穿透, 直到遇到一个break.
5)case 可以有多个,但是只会匹配一个.
6)如果一个case 都没有匹配成,则会执行default 部分.

switch的基本语法流程图的分析
在这里插入图片描述

switch细节讨论

1)表达式数据类型,应和case 后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int
2)switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum[枚举],String)
3)case子句中的值必须是常量,而不能是变量
4)default子句是可选的,当没有匹配的case时,执行default
5)break语句用来在执行完一个case分支后使程序跳出switch语句块;
如果没有写break,程序会顺序执行到switch结尾, 这个现象叫 穿透

switch和if的比较

1)如果判断的具体数值不多,而且符合byte、 short 、int、 char这四种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。

2)其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广

for循环控制

基本介绍:
听其名而知其意,就是让你的代码可以循环的执行

基本语法

for(循环变量初始化; 循环条件; 循环变量迭代){
	循环操作(语句);
}

1)一个for循环包含了四个必要的部分[4要素]
2)要素1: 循环变量的初始化
3)要素2: 循环的条件 , 该条件返回一个布尔值,如果为true, 就执行,否则就退出循环.
4)要素3: 循环操作(语句), 这个就是你要循环执行的代码.
5)要素4: 循环变量迭代 , 表示我们的循环变量要变化,这个由程序员来决定。

for循环的流程图
在这里插入图片描述
注意事项和细节说明

1)循环条件是返回一个布尔值的表达式
2)for(;循环判断条件;) 中的初始化和变量迭代可以不写(写到其它地方),但是两边的分号不能省略。

3)循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。

while循环控制

基本语法

循环变量初始化;
while(循环条件){
           
           循环体(语句);
            循环变量迭代;
}

while循环的流程图
在这里插入图片描述

do…while循环控制

基本语法

循环变量初始化;
do{
            循环体(语句);
             循环变量迭代;
}while(循环条件);

do…while 是先执行,再判断, 说明do…while 一定会执行一次.

do…while循环执行流程分析
在这里插入图片描述
注意事项:
1)循环条件是返回一个布尔值的表达式
2)do…while循环是先执行,再判断

多重循环控制

1)将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环和内层循环。【建议一般使用两层,最多不要超过3层】

2)实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。

  1. 设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n=mn次

跳转控制语句-break

基本介绍:
break语句用于终止某个语句块的执行,一般使用在switch或者循环[三大循环]中。
基本语法:

循坏体
{    ……	 
     break;
     ……
}

以while使用break为例,画出示意图
在这里插入图片描述

跳转控制语句-continue

基本介绍:
1)continue语句用于结束本次循环,继续执行下一次循环。
2)continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 , 这个和前面的标签的使用的规则一样.

基本语法:

{    ……	 
     continue;
     ……
}

以while使用continue为例,画出示意图
在这里插入图片描述

发布了18 篇原创文章 · 获赞 1 · 访问量 193

猜你喜欢

转载自blog.csdn.net/andyonlines/article/details/103723562
今日推荐