选择结构

3、选择结构

1.基本数据类型(byte,short,int,long,float,double,char,boolean)表比较用

​ 关系运算符(>,>=,<,<=,==,!=).
引用数据类型表比较用equals(),语法:引用类型变量1.equals(引用类型变量2);

eg:public static void main(String[] args){
	//准备变量
	int num1=11;
	int num2=11;
	//基本数据类型表比较
	boolean result1=num1==num2;
	System.out.println(result1);	
	//声明引用数据类型
	String s1="abc";
	String s2="abc";
	boolean result2=s1.equals(s2);
	System.out.println(result2);
}

2.Java中结构

​ 2.1:顺序结构.
​ 2.2:选择结构
​ 2.3:循环结构

3.基本if选择结构:用来解决只有一种(单分支)情况的问题.

​ 3.1:语法:if(条件){
​ 语句块;
​ }

​ 3.2:执行流程:如果条件成立,执行语句块;如果条件不成立,就跳过基本if选择结构,执行之后 语句.


eg:public static void main(String[] args){
	//获得具有从键盘上接收数据的能力
	Scanner input=new Scanner(System.in);
	
	System.out.println("你是否有女朋友?(y表示有,其他表示没有)");
	//从键盘上接收结果并存在变量中
	String answer=input.next();
	
	if(!answer.equals("y")){
		System.out.println("加油学技术,让千锋给你分配一个女朋友");
	}
}
题目:你每天晨考是否考了100分,如果是,周五老师请吃饭

4.if-else结构:用来解决有两种情况,且两情况无论如何都会执行其中一种.

​ 4.1:语法:if(条件){
​ 语句块1;
​ }else{
​ 语句块2;
​ }
​ 4.2:执行流程:如果条件为true,就执行语句块1;如果条件为false,就执行语句块2.


	eg:public static void main(String[] args){
	//获得具有从键盘上接收数据的能力
	Scanner input=new Scanner(System.in);
	
	System.out.println("是否每天晨考考了一百分?(y表示是,其他表示否)");
	//从键盘上接收结果,并存在变量中
	String answer=input.next();
	
	if(answer.equals("y")){
		System.out.println("周五老师请吃饭");
	}else{
		System.out.println("抄写10遍");
	}
}
题目:问你是否有女朋友,如果有,找到高薪工作后就结婚;如果没有,找到高薪工作后,千锋给你分配一个女朋友.

5.多重if选择结构:解决有两种及以上情况分支判断问题.

5.1:语法:if(条件1){
			语句块1;
		}else if(条件2){
			语句块2;
		}else if(条件3){
			语句块3;
		}else{
			else块;
		}

5.2:执行流程:判断条件1,如果条件1为true,就执行语句块1,语句块1执行完,就执行多重if结构之后的语句;如果条件1为false,就判断条件2,如果条件2为true,就执行语句块2, 语句块2执行完,就执行多重if结构之后的语句;如果条件2为false,就判断条件3,如果条件3为true,就执行语句块3,语句块3执行完,就执行多重if结构之后的语句;如果条件3为false,就无条件执行最后else块.

5.3:结构特点:
5.3.1:在多重if选择结构中if块有且仅有一个.
else-if块可以有0个到多个.
else块可以有0个到1个.
5.3.2:在多重if选择结构中最多执行一个语句块(一种分支),最少什么都不执行.
5.3.3:用多重if选择结构解决范围(区间)判断问题时,分支之间不一定能互换位置.
用多重if选择结构解决等值判断问题时,分支之间可以互换位置,不影响结果.

	eg:public static void main(String[] args){
	//获得具有从键盘上接收数据的能力
	Scanner input=new Scanner(System.in);
	
	System.out.println("请输入你的成绩:");
	//从键盘上接收成绩并存在变量中
	double score=input.nextDouble();
	//在Java中不支持 60<=score<=80这种写法,60<=score&&score<=80
	if(score>=90){
		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("再接再厉");
	}
}
				
	eg:public static void main(String[] args){
	//获得具有从键盘上接收数据的能力
	Scanner input=new Scanner(System.in);
	
	System.out.println("请输入今天是星期几?(输入1-7数字)");
	int today=input.nextInt();
	
	if(today==1){
		System.out.println("吃豆浆油条");
	}else if(today==6){
		System.out.println("手抓饼");
	}else if(today==2){
		System.out.println("小笼包");
	}else if(today==3){
		System.out.println("肠粉");
	}else if(today==4){
		System.out.println("面包");
	}else if(today==5){
		System.out.println("煎饺");
	}else{
		System.out.println("睡觉");
	}
}

	题目:如果今天是星期一,就给妈妈打电话;如果今天是星期二,就给奶奶打电话;如果今天			是星期三就给姐姐打电话,如果今天是星期四就给朋友打电话.

6.嵌套选择结构:在一个选择结构的大括号中完整包含另一个选择结构.

​ 特点:选择结构之间可以任意嵌套,嵌套要正确.
​ 选择结构可以嵌套多层,目前嵌套两到三层居多.
​ eg:public static void main(String[] args){
​ //获得具有从键盘上接收数据的能力
​ Scanner input=new Scanner(System.in);

	System.out.println("请输入今天是星期几?(输入1-7数字)");
	int today=input.nextInt();
	if(today>=1&&today<=7){
		if(today==1){
			System.out.println("吃豆浆油条");
		}else if(today==6){
			System.out.println("手抓饼");
		}else if(today==2){
			System.out.println("小笼包");
		}else if(today==3){
			System.out.println("肠粉");
		}else if(today==4){
			System.out.println("面包");
		}else if(today==5){
			System.out.println("煎饺");
		}else{
			System.out.println("睡觉");
		}
	}else{
		System.out.println("你的输入有误!");
	}
}

题目:参加百米赛跑,问你跑步时间,如果时间大12秒,谢谢参与,如果时间小于等于12秒,就进入决赛,再问你性别,如果性别是男,恭喜进入男子组决赛,如果性别是女,恭喜进入女子组决赛.

7.switch结构:解决多种情况的等值判断问题.

​ 7.1:语法:switch(表达式){
​ case 值1:
​ 代码块1;
​ break;
​ case 值2:
​ 代码块2;
​ break;
​ ...
​ default:
​ default代码块;
​ break;
​ }
​ 7.2:执行流程:判断表达式结果等于case后面值1,就执行代码块1,遇到break或结尾}就跳出 switch结构,执行之后语句;如果表达式结果等于case后面值2,就执行代码块2, 遇到break或结尾}就跳出switch结构,执行之后语句;如果表达式结果不等于 case后面的任何一个值,就执行default代码块遇到break或结尾}就
​ 跳出switch结构.
​ 7.3:结构特点:
​ 7.3.1:switch结构中,表达式的结果在jdk1.7之前只支持byte,short,int,long,char(枚 举),在jdk1.7之后表达式还可以是String类型.
​ 7.3.2:在switch结构中,case可以有0个到多个,default可以有0个到1个.
​ 7.3.3:在同一个switch结构中,case后面的值不能相同.
​ 7.3.4:在switch结构,可以省略break,如果省略break,switch结构中表达式判断满足case 后面的值后,执行对应代码块,执行完后,没有break也没有遇到结尾},不再判断, 会一直执行下去,直到遇到break或结尾},才能跳出switch结构,这种现象 case贯穿.
​ 一般情况下,不建议大家省略break;
​ 7.3.5:在switch结构中,case块之间可以互换位置,不影响结果;
​ default块可以放在switch的大括号中任意位置,不影响结果.
​ 7.3.6:在switch结构中,最少执行0种情况,最多执行所有情况.
​ eg:public static void main(String[] args){
​ //获得具有从键盘上接收数据的能力
​ Scanner input=new Scanner(System.in);

	System.out.println("请输入今天是星期几?(输入1-7数字)");
	int today=input.nextInt();
	switch(today){
		case 1:
			System.out.println("吃豆浆油条");
			break;
		case 2:
			System.out.println("小笼包");
			break;
		case 3:
			System.out.println("肠粉");
			break;
		case 4:
			System.out.println("面包");
			break;
		case 5:
			System.out.println("煎饺");
			break;
		case 6:
			System.out.println("手抓饼");
			break;
		case 7:
			System.out.println("睡觉");
			break;
		default:
			System.out.println("你的输入有误!");
			break;
	}
}

	题目:如果今天是星期一,就给妈妈打电话;如果今天是星期二,就给奶奶打电话;如果今天			是星期三就给姐姐打电话,如果今天是星期四就给朋友打电话.

8.多重if VS switch

​ 8.1:相同点:
​ 8.1.1:都可以解决多种情况等值判断问题.(首选switch结构)
​ 8.1.2:都可以执行0种情况.

8.2:不同点:
	8.2.1:多重if结构既可以解决多种情况等值判断问题,也可以解决多种情况范围(区间)判					断问题;switch结构只能解决多种情况的等值判断问题.
	8.2.2:switch结构的case块(分支情况)可以互换位置,不影响结果;多重if结构在解决等				值判断问题时分支间可以互换位置,不影响结果,但是在解决区间判断问题时分				支间不一定可以互换位置.
	8.2.3:多重if结构最多执行一种分支情况;switch结构最多执行所有分支情况.
	8.2.4:多重if结构的条件的结果是boolean类型;switch结构的表达式的结果,在jdk1.7之				前只支持byte,short,int,long,char(枚举),在jdk1.7之后表达式还可以是					String类型.
	8.2.5:多重if结构中没有break关键字;switch结构中可以有break关键字,它的作用是跳				出switch结构.
	8.2.6:多重if结构中每个条件可以写一个判断式子,也可以写多个判断式子只要式子间用				逻辑运算符连接;switch结构条件只能是一个式子.

9.局部变量:在方法中声明的变量都叫局部变量.

​ 局部变量不赋值是没有值,就不能使用.
​ 局部变量的作用范围,仅在声明它的大括号中有效.

总结:

1.数据类型比较
2.java执行结构
3.基本if选择结构
4.if-else
5.多重if结构
6.嵌套选择结构
7.switch结构
8.多重if VS switch
9.局部变量的作用范围

posted @ 2020-12-25 21:24  白小哥哥  阅读(125)  评论(0编辑  收藏  举报