03分支结构(if/else,switch选择判断)

分支结构

Note:switch中支持的类型为byte,short,int,char,String(JDK7+),枚举共6种,不支持浮点型与long

1.if结构

if:如果

格式:

if(布尔表达式){

​ //条件成立逻辑代码块

}

import java.util.Scanner;
public class Test5{
	public static void main(String [] args){
		// 赵四两门成绩  java成绩  音乐成绩
		// 如果java成绩大于85 并且 音乐成绩 大于75  奖励苹果8袋
		// 或者
		// 如果java成绩等于100 并且 音乐成绩 大于 65 奖励苹果8袋
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你的java成绩");
		int javaScore = input.nextInt();
		System.out.println("请输入你的音乐成绩");
		int musicScore = input.nextInt();
        
		if((javaScore > 85 && musicScore > 75) || (javaScore == 100 && musicScore > 65)){
			System.out.println("奖励苹果8袋");
		}	
		// 在程序结束之前 判断当前是否获得奖励
		System.out.println("程序结束");
	}
}
2.if - else

else : 否则

要求:else不能单独出现,必须结合if或者其他的选择结构

格式:

if(布尔表达式){

​ //条件成立执行的逻辑代码

}else{

​ //以上条件不成立的其他任何情况都会执行的代码

}

package com.qfedu.test1;

import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) {
		// if -else
		// else:否则 不能单独出现 必须结合 if 或者其他的选择结构
		// 单行注释快捷键  选中需要被注释的代码  ctrl + / 取消注释 也是一样的操作
		// ctrl + d删除选中内容
//		if(布尔类型的表达式) {
//			
//		}else {
//			
//		}		
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你的java成绩");
		int javaScore = input.nextInt();
		System.out.println("请输入你的音乐成绩");
		int musicScore = input.nextInt();
			
		if((javaScore == 100 && musicScore > 65) || (javaScore >= 85 && musicScore >= 75)) {
			System.out.println("奖励苹果8袋");
		}else {
			System.out.println("继续努力");
		}
	}
}
3.多重if

适用场景:多重if用于处理某个值处于某个连续的区间的情况

else - if不能单独出现,必须结合if

多重if中的else - if没有上限,写多少都可以

多重if中的else可写可不写,根据需求是否书写

package com.qfedu.test1;

import java.util.Scanner;

public class Test4 {
	public static void main(String[] args) {
		// 根据成绩评定等级
		// >= 90 优秀
		// >= 80 良好
		// >= 70 中等
		// >= 60 及格
		// < 60 差
		// 以上需求我们可以使用多重if来实现
		// 多重if通常用于处理某个值处于某个连续的区间的情况 
		// 多重if编写条件必须是有顺序的  升序 或者  降序
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你的成绩");
		int score = input.nextInt();
		
		if(score >= 90) {
			System.out.println("优秀");
		}else if(score >= 80) {
			System.out.println("良好");
		}else if(score >= 70) {
			System.out.println("中等");
		}else if(score >= 60) {
			System.out.println("及格");
		}else {
			System.out.println("继续努力");
		}	
	}
}
4.嵌套if

概念:if选择结构中继续嵌套if选择结构,if、if - else、多重if之间可以互相嵌套,没有上限

适用场景:通常用于处理某些关联关系的条件情况,例如先符合条件A,才有机会符合条件B

package com.qfedu.test1;

import java.util.Scanner;

public class Test6 {
	public static void main(String[] args) {
		// 举行百米跑步比赛 跑步时间小于 10 秒的话 进入决赛 
		// 根据性别分别进入 男子组 或者 女子组
		// 需求改进
		// 为了公平比赛 男生 要求10秒可以进入决赛 女生12秒可以进入决赛
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你的跑步时间");
		double time = input.nextDouble();
		System.out.println("请输入你的性别");
		String sex = input.next();
		//		if(time < 10) {
		//			// 男生
		//			if(sex.equals("男")) {
		//				System.out.println("恭喜你进入男子组");
		//			}
		//		}else if(time < 12) {
		//			if(sex.equals("女")) {
		//				System.out.println("恭喜你进入女子组");
		//			}
		//		}

//		if((time < 10 && sex.equals("男"))) {
//			System.out.println("恭喜进入男子组");
//			
//		} else if (time < 12 && sex.equals("女")) {
//			System.out.println("恭喜进入女子组");
//		}
				
		if(sex.equals("男")) {
			if(time < 10) {
				System.out.println("恭喜进入男子组");
			}
		}else if(sex.equals("女")){
			if(time < 12) {
				// alt + 方向键 上下键
				System.out.println("恭喜进入女子组");
			}
		}
	}
}
5.switch结构

switch : 开关

case:情况

break:打破、折断

default:默认

格式:

switch(变量|表达式){

​ case 值1:

​ 逻辑代码1;

​ case 值2:

​ 逻辑代码2;

​ case 值n:

​ 逻辑代码n;

​ default:

​ 未满足时的逻辑代码;
}

使用场景:switch通常用于处理等值的情况

类型要求:支持的数据类型:

Note:switch中支持的类型为byte,short,int,char,String(JDK7+),枚举共6种,不支持浮点型

package com.qfedu.test1;

import java.util.Scanner;

public class Test7 {
	public static void main(String[] args) {
		// switch 
		// 支持的数据类型 byte short int char String(JDK7+) 枚举
		// 需求:学校举行尬舞比赛 
		// 一等奖  夏令营1天
		// 二等奖  夏令营1天
		// 三等奖  夏令营1天
		// 四等奖 夏令营1天

		Scanner input = new Scanner(System.in);
		System.out.println("请输入你的名次");
		int num = input.nextInt();
		//		if(num == 1) {
		//			System.out.println("夏令营1天");
		//		}else if (num == 2) {
		//			System.out.println("优盘1个");
		//		}else if(num == 3) {
		//			System.out.println("笔记本1个");
		//		}else if(num == 4){
		//			System.out.println("口头表扬一次");
		//		}

//		switch(num) {
//		case 1:
//			System.out.println("夏令营1天");
//			break;
//		case 2:
//			System.out.println("优盘1个");
//			break;
//		case 3:
//			System.out.println("笔记本1个");
//			break;
//		case 4:
//			System.out.println("口头表扬一次");
//			break;
//		}
//		
		switch(num) {
		case 1:
		case 2:
		case 3:
		case 4:
			System.out.println("夏令营1天");
			// break也不是必须存在的  根据需求是否书写 不书写的效果将一直执行到书写break的case停止
			// case块书写上break  表示执行 完当前case块代码跳出当前case块
			break;
			// default不是必须存在的 根据需求
			// 位置也不是固定的 但是要求必须写在最后
			// default也要加上break
		default:
			System.out.println("继续努力");
			break;
		}
	}
}
6.局部变量

概念:声明在函数内部的变量

要求:

1.必须先赋值才能使用

2.定义位置:定义在方法体内部

3.多个变量,在重合的作用范围内,不能出现重名(命名冲突)

4.作用范围:在定义的代码块以内可以访问

5.存放的位置:局部变量存在栈中

6.生命周期:随着方法的入栈(压栈)而生效,随着方法的出栈(弹栈)而死亡

package com.qfedu.test1;
// int a = 20; 不能定义在类以外
public class Test9 {
	// int s = 20; 在这里定义可以编译通过 但是不是局部变量(全局变量)
	public static void main(String[] args) {
		int a;
		int b = 10;
		System.out.println(b);
		// System.out.println(a); 局部变量 必须先赋值 才能使用
		if(b > 5) {
			int c = 20;
			System.out.println(c);
			// System.out.println(d); 不能访问d 因为超出范围 并且 d在后续的代码中定义  不能提前访问
			if(b > 6) {
				int d = 20;
				System.out.println(c);
			}
//			System.out.println(d); // 超出范围
		}
		
//		System.out.println(c); 超出范围
	}
}
每日问题

1.if(表达式) 表达式的最终值为什么类型?
2.多重if用来处理什么样的情况?
3.switch中break的作用?
4.switch支持的数据类型?
5.switch中default的作用?
6.“switch(这里的值为布尔类型的)”,这句话对吗?为什么?
7.switch和多重if的区别?
8.switch中的default和多重if中的else可以不写吗?
9.比较字符串的内容使用什么方法?
10.case后边的值可以有重复的吗?比如有两个 case 2: ……case 2:……

解答

1.if(表达式) 表达式的最终值为什么类型?
布尔
2.多重if用来处理什么样的情况?
值处于连续区间的情况
3.switch中break的作用?
跳出case块
4.switch支持的数据类型?
byte short int char String(JDK7+) 枚举
5.switch中default的作用?
我们定义的case块之外的其他任何情况
6.“switch(这里的值为布尔类型的)”,这句话对吗?为什么?
不对,因为第四题
7.switch和多重if的区别?
switch用于处理等值的情况
多重if用于处理值处于区间的情况
8.switch中的default和多重if中的else可以不写吗?
switch中的default和多重if中的else 可以不写 都用于处理定义条件以外的情况
9.比较字符串的内容使用什么方法?
equals 一扣斯
10.case后边的值可以有重复的吗?比如有两个 case 2: ……case 2:……
不能,case后的值不能重复,否则编译不通过

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值