选择结构
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.局部变量的作用范围