第三章 选择结构

Java面向对象基础

第三章 选择结构

无论是Java还是任何一门语言,都由流程控制语句组成,使用流程控制语句能够实现相应的业务流程和算法实现。
流程控制分为三种:

  • 顺序结构
  • 选择结构(分支结构)
  • 循环结构

一、什么是选择结构:

所谓的选择结构,就是代码会根据实际情况,做出相应的选择。

二、if分支结构

1、基本单分支if语句:
if(boolean类型的表达式){
	//当boolean类型的表达式为ture 时,所致行的代码块;
}

(1)如果boolean类型的表达式为false,则整个if单分支结构运行完毕(即不执行if语句),继续执行后面的代码。
(2)如果boolean类型的表达式为true,执行if单分支的代码,执行完毕后 ,继续执行if单分支之外的后面代码。
补充:

  • 代码块:就是由一对{}所包围起来的代码。
  • 表达式就是一个值。
2、使用复杂条件的if选择结构
public static void main(String[] args) {
		/*
		 * 张浩Java成绩大于90分,并且音乐成绩大于80分时,
		 * 或者Java成绩等于100分,音乐成绩大于70分
		 * 
		 * 分析:
		 * 条件有两大部分组成:
		 * (Java成绩 > 90分 && 音乐成绩 > 80分)
		 * ||
		 * (Java成绩 == 100分 && 音乐成绩 > 70分)
		 */
		// 初始化 int 类型的变量 javaScore 存储 Java 考试成绩
		int javaScore = 98;
		// 初始化 int 类型的变量 musicScore 存储音乐考试成绩
		int musicScore = 90;
		/*
		 * 初始化 boolean 类型变量 flag 存储:
		 * (Java成绩 > 90分 && 音乐成绩 > 80分)
		 * ||
		 * (Java成绩 == 100分 && 音乐成绩 > 70分)
		 */
		// 得到最终的判断之后,可以使用 if 单分支结构进行判断
		if ((javaScore > 90 && musicScore > 80) || (javaScore == 100 && musicScore > 70)) {
			// 当 boolean 类型表达式为 true 时,所执行的代码
			System.out.println("考的不错,奖励给你十双鸿星尔克!");
		}
	}

使用逻辑运算符实现复杂条件。

3、 结合运算符的优先级编写条件

(1)最高的优先级()
(2)最低的优先级 =
(3)优先级:! > 算术运算符 > 关系运算符 > && > ||
(4)复杂条件使用括号可以提高可读性

三、流程图

流程图是逐步解决指定问题的步骤和方法的一种图形化表示方法。

1、什么是流程控制

流程控制是用来控制程序中各语句的执行顺序。
在这里插入图片描述
在这里插入图片描述

2、流程控制图工具

visio

四、if-else选择结构

如果使用多个单分支结构,必须严格控制boolean类型表达式的区间,那么将产生无法判断的情况。因此,产生if-else双分支结构。
语法结构:

if(boolean类型表达式){
//boolean类型表达式为true
}else{
//boolean类型表达式为false
}

五、多重分支if-else if-else

当需要实现多分支结构时,使用if-else语句会产生需要大量嵌套的if-else语句,时代吗的复杂度大幅上升。因此产生if-else if-else多重分支语句。
语法结构:

if(boolean类型表达式1){
//boolean类型表达式1为true
}else if(boolean类型表达式2){
//boolean类型表达式1为false,表达式2为true
}
...
else{
//当所有表达式都为false
}

补充:
(1)如果变量是String类型,在判断相等时,使用equals()方法实现;只有基本数据类型的值,在判断相等时,使用“==”实现。
(2)所有位于java.lang包下面的引用类型,都不需要使用import关键字引入。

六、switch选择结构

1、语法结构
switch(int类型表达式){
	case int类型值1:
		//当int类型表达式的值等于此时int类型值1时
	    break;
	case int类型值2:
		//当int类型表达式的值等于此时int类型值2时
		break;
	...
	default:
		//与int类型值均不相等时
			break;
}
2、结构特征

(1)专门用于解决分支结构中的等值判断这一特殊情况。因此当判断条件为非等值判断时,是无法使用switch…case结构的。
(2)switch…case能够解决问题,if…else if …一定也能解决;用if …else if …能解决的问题不一定能使用switch…case解决。switch…case是if…else if…的特殊情况
(3)switch…case中,所有的case都在一个代码块中,而if…else if…则分布在不同的代码块中。
(4)当分支条件过多时,switch…case的执行效率要比if…else if …高。(类似于switch…case的结构相当于空间换时间)

3、代码展示
import java.util.Scanner;

/*
 * 通过控制台控制输入两个整数
 * 实现五个功能个:+、-、*、/、%
 */
public class Homework001 {
	public static void main(String[] args) {
	Scanner input = new Scanner (System.in);
	System.out.println("****************简易计算器**************");
	System.out.println("1.计算加法\t\t2.计算减法\t\t3.计算乘法\t\t4.计算除法\t\t5.计算余数");
	System.out.println("*************************************");
	System.out.println("请输入功能编码: ");
	int order = input.nextInt(); //编码号
	int num1 =0;
	int num2= 0;
	//判断是否编码小于6
	if(order>=1&&order<=5){
		
		System.out.println("请输入所要计算的第1位数字:");
		num1 = input.nextInt(); //数字1
		System.out.println("请输入所要计算的第2位数字:");
		num2 = input.nextInt(); //数字2
	}
		switch (order) {
		case 1:
			//加法运算
			System.out.println("进入计算加法功能--------");
			int result1 = num1 + num2;  
			System.out.println("运算式为:"+num1+"+"+num2+"="+result1);
			break;
		case 2:
			//减法运算
			System.out.println("进入计算减法功能--------");
			int result2 = num1 - num2;
			System.out.println("运算式为:"+num1+"-"+num2+"="+result2);
			break;
		case 3:
			//乘法运算
			System.out.println("进入计算乘法功能--------");
			int result3 = num1 * num2;
			System.out.println("运算式为:"+num1+"*"+num2+"="+result3);
			break;
		case 4:
			//除法运算
			System.out.println("进入计算除法功能--------");
			double result4 = num1 / num2;
			System.out.println("运算式为:"+num1+"/"+num2+"="+result4);
			break;
		case 5:
			//取余运算
			System.out.println("进入计算取余功能--------");
			int result5 = num1 % num2;
			System.out.println("运算式为:"+num1+"%"+num2+"="+result5);
			break;
		default:
			System.out.println("输入错误!");
			break;
	
		}
	}
4、 分析

(1)switch所需要的是一个int类型的表达式,只要这个数据类型,能够自动类型转换为int类型,都可以使用,包括char类型。(从JDK8开始,也可以是String类型)
(2)break关键字在switch…case中能终止代码的运行,跳出所在代码块,继续执行后面代码。表现为:能够终止继续向下继续运行其他的case代码,防止代码的穿击现象。
(3)switch…case在执行时,首先会根据switch的int类型表达式进行匹配哪个case的值相同,在运行完毕这个case代码之后,会继续向下运行其他case的代码,直至所有的case和default的代码都执行完毕或者是遇到break关键字,才能停止运行,整个结构运行结束。
(4)无论default放在任何位置,在执行时,都会首先按照顺序判断所有的case,然后才会执行default。如果default在代码中间位置,且无break,那么代码会先执行default,然后执行其下面的case,直到所有的代码运行完毕,或者是遇到break.

七、总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值