干货满满~关于Java:if 、if-else、swtich的五种语句结构应用场景及使用方法解析

语句结构

   流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
   其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构、分支结构和循环结构,如下图所示:在这里插入图片描述
顺序语句: 按照正常的语句顺序从上往下执行。
分支语句: 根据某种条件选择执行。
循环语句: 根据某种条件反复执行。

分支语句

分支语句的分类:
   1.单if语句
   2.If-else语句
   3.多重if语句
   4.嵌套if语句
   5.switch语句

一、单if语句

引入

需求: 小明考试成绩60分以上奖励电脑
   我们可以使用三目运算符实现,但是三目运算符的Y和Z表达式只能够书写一条语句,所以不能够满足我们开发的一些复杂需求,所以可以使用选择语句

格式
if(条件表达式) {
   语句体;
}

注意事项

   1.条件表达式的结果必须是boolean类型,一般都是关系表达式或者逻辑运算符连接多个关系表达式
   2.语句体中可以有一条语句也可以有多条语句,如果语句体中只有一条语句,那么{}可以省略不写,但是建议写上,提高可读性
   3.能够使用三目运算符改进的选择语句,尽量使用三目改进,如果改进不了才使用选择语句
   4.if(score >= 60);{} 表示无论条件是否成立,都会执行与语句体,因为if和;构成了选择语句

应用场景

针对条件单一的情况使用单if语句

代码实例
public class IfDemo01 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入成绩: ");
		double score = input.nextDouble();		
		if(score >= 60);{
			System.out.println("奖励电脑");
		}
	}
}

二、if-else语句

引入

需求: 小明考试成绩60分以上奖励手机,否则奖励电脑
格式
if(条件表达式) {
   语句体1;
} else {
   语句体2;
}

执行流程

1.首先执行条件表达式
2.判断条件表达式是否成立
   成立
     执行语句体1
   不成立
     执行语句体2

注意事项

   1.条件表达式的结果必须是boolean类型,一般都是关系表达式或者逻辑运算符连接多个关系表达式
   2.语句体中可以有一条语句也可以有多条语句,如果语句体中只有一条语句,那么{}可以省略不写,但是建议写上,提高可读性
   3.能够使用三目运算符改进的选择语句,尽量使用三目改进,如果改进不了才使用选择语句

应用场景

针对两种情况的时候使用

代码实例
public class IfDemo02 {
	 public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入成绩: ");
		double score = input.nextDouble();
		// System.out.println((score >= 60) ? "奖励手机" : "奖励电脑");
		 if (score >= 60) 
System.out.println("奖励手机");
		 else 
System.out.println("奖励电脑");
}
}

三、多重if语句

引入

需求: 老师批改试卷,成绩在90分以上的为优秀,成绩在80-90的为良好,成绩在60-80的为及格,60以下的为差,该怎么实现呢?

格式

if(条件表达式1) {
   语句体1;
} else if(条件表达式2) {
   语句体2;
} else if(条件表达式3) {
   语句体3;
} …(条件表达式n) {
   语句体n;
} else {
   语句体n+1;
}

执行流程

1.首先判断条件表达式1是否成立
   成立
    执行语句体1;
   不成立 a<=30 || a>=40
    继续判断条件表达式2 是否成立
   成立
    执行语句体2
   不成立
    继续判断…
2.如果全部都不成立,那么就执行else语句

注意事项

  1.所有的条件表达式的结果必须是boolean类型,一般都是 关系表达式或者逻辑运算符连接多个关系表达式
  2.语句体中可以有一条语句也可以有多条语句,如果语句体中只有一条语句,那么{}可以省略不写,但是建议写上,提高可读性
  3.多重if语句不能够使用三目运算符改进
  4.score > 100 || score < 0的不成立条件是score <= 100 && score >= 0,也就是逻辑&&的反条件是逻辑||
  5.无论你书写多少个条件,只有一个条件中的语句体被执行
  6.else if语句可以书写1~n个,但是if语句和else语句只能够有一个,并且else语句有的时候可以省略不写,但建议写上

应用场景

针对多个条件的情况,并且常用于区间判断

代码示例
public class IfDemo03 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入成绩: ");
		double score = input.nextDouble();
		if (score > 100 || score < 0) {
			System.out.println("您输入的成绩无效!");
		} else if (score >= 90 && score <= 100) { 
			System.out.println("优秀");
		} else if (score >= 80 && score < 90) { 
			System.out.println("良好");
		} else if (score >= 60 && score < 80) { 
			System.out.println("及格");
		} else {
			System.out.println("差");
		}
	}
}

四、嵌套if语句

引入

  需求: 学校举行运动会,百米赛跑跑入10秒内的学生有资格进决赛,根据性别分别进入男子组和女子组

格式

  本质上并没有真正意义上的嵌套if语句,只不过是前三种if语句格式综合起来的一种,没有固定格式,如下所示:
   if() {
     if() {}
     else if() {}
     else {
       if() {} else {}
     }
   } else {
     if() {}
   }

应用场景

针对多种条件多种情况的场景

注意事项

  1.== 只能够比较基本数据类型是否相等,String是引用类型,所以不能够比较,这里暂时使用equals方法来比较字符串是否相等
  2.嵌套语句一般会降低程序的可读性,所以慎用,能用三目就用三目

代码示例
public class IfDemo04 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入跑步成绩: ");
		double score = input.nextDouble();
		System.out.print("请输入性别: ");
		String gender = input.next();
		if (score < 10) {
			if (gender.equals("男")) {
				System.out.println("恭喜进入男子组决赛");
			} else if (gender.equals("女")) {
				System.out.println("恭喜进入女子组决赛");
			} else {
				System.out.println("恭喜进入人妖组一决雌雄!!!");
			}
		} else {
			System.out.println("回去多跑一会,明年再来!!!");
			if (gender.equals("女")) {
				System.out.println("别走,送你一双运动鞋,谢谢参与");
			}
		}
	}
}

五、switch语句

引入

  需求: 电话呼叫案例,欢迎致电中国电信,查询服务请按1,宽带业务咨询办理请按2,手机业务咨询办理请按3,障碍报修请按4,投诉业务请按5,转人工服务请按6,充值缴费请按7,政府及企业客户请按8,无需帮助请按请按0,控制台输入对应的数字显示对应的服务。输入有误显示“对不起您的输入有误”

格式

switch (表达式) {
  case value1:
  break;
  case value2:
  break;
  default:
  break;
}

注意事项

  1.表达式可以是变量也可以是常量,也可以是一个复杂表达式
     表达式的取值范围 byte short char int String 枚举
     在JDK7以后可使用String类型
     在JDK5以后可以使用枚举类型
     其实这里之所以可以使用 byte short char 是因为底层在参与运算的时候会转换成 int类型来处理
  2.case子句必须是常量表达式,case子句可以有多个,但是每一个case子句的取值不能够重复
  3.default子句类似于if语句的else语句,可以省略的,但是不建议,一般用来处理一种其他的情况,可以出现在switch语句中的任意位置,但是一般建议写在最后面。
  4.break子句表示退出switch语句体,break语句也可以省略,一旦省略会出现break穿透现象,一般不会省略break子句

  5.break穿透现象: 会依次往下执行case子句,直到碰到switch的右大括号

多重if语句和switch语句的区别

  1.if语句条件表达式只能够是boolean类型, switch语句不可以是boolean类型,必须是byte short int char String 枚举其中之一。
  2.switch语句常用于等值判断,而多重if语句常用语区间判断
  3.能够使用switch语句的情况就一定可以使用多重if改进,反之不成立

应用场景

switch语句常用于等值判断

代码示例
public class SwitchDemo01 {
	public static void main(String[] args) {
		System.out.println(
				"欢迎致电中国电信,查询服务请按1,宽带业务咨询办理请按2,手机业务咨询办理请按3,障碍报修请按4,投诉业务请按5,转人工服务请按6,充值缴费请按7,政府及企业客户请按8,无需帮助请按请按0,控制台输入对应的数字显示对应的服务。");
		Scanner input = new Scanner(System.in);
		System.out.print("请输入服务编号: ");
		int choice = input.nextInt();
		switch (choice) {
		case 1:
			System.out.println("查询服务");
			break;
		case 2:
			System.out.println("宽带业务咨询办理");
			break;
		default:
			System.out.println("default子句");
			break;
		case 3:
			System.out.println("手机业务咨询办理");
			break;
		case 4:
			System.out.println("障碍报修");
			break;
		case 5:
			System.out.println("投诉业务");
			break;
		}
	}
}

五种选择语句的选取

单if语句: 针对一种情况的时候
if-else语句: 针对两种情况的时候
多重if语句: 针对多种情况的时候,常用于区间判断
嵌套if语句: 针对多种条件的时候
swtich语句: 针对条件是等值的情况

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值