12--程序结构(程序执行流程)--选择结构

一般来说程序的结构有顺序结构、选择结构和循环结构3种,这三种不同的结构有一个共同的特点,他们只有一个入口,也只有一个出口。单一入出口让程序易读、易维护、易调试。

  1. 顺序结构:程序至上而下逐一执行,一条语句执行完之后继续执行下一条语句,一直到程序的末尾,如图所示:
  2. 选择结构:选择结构就是根据条件的成立与否决定要执行哪些语句一种结构:如图所示:
  3. 循环结构:循环结构就是根据判断条件的成立与否决定程序段落的执行次数,这个程序段落就称为循环体,如图所示:
    在这里插入图片描述

选择结构

选择结构包括if、if…else及switch语句,程序加上选择结构后,就像增加了“十字路口”一样,根据不同的选择,程序的运行就会有不同结果。
if语句
if语句语法:
if(判断条件){
语句1;
……
}
如果在if语句主体中要处理的语句只有一个,则可省略左右大括号。当判断条件的值满足时(true),就会逐一执行大括号里面的语句。if的流程控制图:
在这里插入图片描述
if语句的执行步骤:
(1) 对表达式的结果进行判断
(2) 如果表达式结果为真,则执行语句
(3) 如果表达式结果为假,则跳过该语句
实例1:

package com.qwy;

public class Demo01 {
    
    
	public static void main(String[] args) {
    
    
		int x=3;
		int y=4;
		System.out.println("*********开始比较**********");
		if(x>y){
    
    
			System.out.println("x比y大");
		}
		if(x<y){
    
    
			System.out.println("x比y小");
		}
		System.out.println("*********结束比较**********");
	}
}

执行结果:
开始比较*
x比y小
结束比较*
if…else…语句
语法结构:
if(判断条件){
语句主体1;
}else{
语句主体2;
}

当程序中存在分支的判断语句时,就可以用if…else语句进行处理,当判断条件成立时,执行if语句主体,判断条件不成立时,执行else后面的语句主体,if…else的流程控制图示:在这里插入图片描述
实例2:

package com.qwy;

public class Demo02 {
    
    
	public static void main(String[] args) {
    
    
		int num = 3;
		if (num % 2 == 1) {
    
    
			System.out.println("nums是奇数");
		} else {
    
    
			System.out.println("num是偶数");
		}
	}
}

运行结果:
nums是奇数
三目运算符(三元运算符)
有一种运算符可以等价于使用if…else进行变量赋值的语句,即三目运算符:其格式:变量=判断条件?表达式1:表达式2。
实例3:

package com.qwy;

public class Demo03 {
    
    
	public static void main(String[] args) {
    
    
		int max = 0;
		int x = 2;
		int y = 4;
		max = x > y ? x : y;
		System.out.println(max);
	}
}

运行结果:
4
从运行结果,使用三目运算符的编写更为简洁,他用一个语句就可以代替一长串的if…else。
if…else if…else语句
如果需要在if…else中判断多个条件时,使用if…else if…else语句,其语法:
if(条件判断1){
语句主体1;
}else if(条件判断2){
语句主体2;
}
…//多个else if()语句
else{语句主体3}
if…else if流程控制图:
在这里插入图片描述
实例4:

package com.qwy;

public class Demo04 {
    
    
	public static void main(String[] args) {
    
    
		int x = 5;
		if (x == 1) {
    
    
			System.out.println("x的值是1");
		} else if (x == 2) {
    
    
			System.out.println("x的值是2");
		} else if (x == 5) {
    
    
			System.out.println("x的值是5");
		} else {
    
    
			System.out.println("x的值不在1,2,5中");
		}
	}
}

运行结果:
x的值是5
switch语句
在众多的条件中找到并执行其中一个符合判断条件的语句时,除了使用if…else不断的判断外,还可以使用更方便的方式,即多重选择——switch语句。其语法格式:
switch(表达式){
case 选择值1: 语句主体1;
break;
case 选择值2: 语句主体2;
break;
……
case 选择值n:语句主体n;
break;
default : 语句主体;
}
switch流程控制图:
在这里插入图片描述
switch流程控制的执行步骤:
(一) switch语句先计算括号中的表达式,结果是数字、字符、枚举(JDK1.5之后)、字符串(JDK1.7之后)
(二) 根据表达式的值检测是否符合case后面的选择值,如果是case的选择值都不符合,则执行default所包含的语句,执行完毕即离开switch语句。
(三) 如果某个case的选择值符合表达式的结果,就会执行该case所包含的语句,一直到break语句后才离开switch语句。
(四) 若是没有在case语句之后加上break语句,则会一直执行到switch语句的尾部才离开switch语句。
(五) 若是没有定义default执行语句,则什么也不执行,直接退出switch语句。
实例5:

package com.qwy;

public class Demo05 {
    
    
	public static void main(String[] args) {
    
    
		int x = 3;
		int y = 4;
		char oper = '-';
		switch (oper) {
    
    
		case '+': {
    
    
			System.out.println("x+y=" + (x + y));
			break;
		}
		case '-': {
    
    
			System.out.println("x-y=" + (x - y));
			break;
		}
		case '*': {
    
    
			System.out.println("x*y=" + (x * y));
			break;
		}
		case '/': {
    
    
			System.out.println("x+y=" + (x / y));
			break;
		}
		default: {
    
    
			System.out.println("未知的操作");
			break;
		}
		}
	}
}

运行结果:
x-y=-1
实例6:验证break的作用

package com.qwy;

public class Demo06 {
    
    
	public static void main(String[] args) {
    
    
		int x=3;
		int y=4;
		char oper='-';
		switch (oper) {
    
    
			case '+':{
    
    
				System.out.println("x+y="+(x+y));
				//break;
			}
			case '-':{
    
    
				System.out.println("x-y="+(x-y));
				//break;
			}
			case '*':{
    
    
				System.out.println("x*y="+(x*y));
				//break;
			}
			case '/':{
    
    
				System.out.println("x+y="+(x/y));
				//break;
			}
			default:{
    
    
				System.out.println("未知的操作");
				//break;
			}		
		}
	}
}

运行结果:
x-y=-1
x*y=12
x+y=0
未知的操作

从运行结果可以看出,在程序第一个条件满足之后,由于没有设置相应的break语句,程序从第一个满足条件的位置开始依次向下执行,直到最后一个条件执行完毕才会退出switch。

猜你喜欢

转载自blog.csdn.net/qwy715229258163/article/details/113855385
今日推荐