一、if分支结构
生活中的执行结构:
- 顺序结构: 起床、刷牙、坐车、上学…
- 选择结构: 上学选择交通工具–坐公交,做地铁,打车…
- 循环结构: 重复性的每天敲代码…
程序中的执行结构:
- 顺序结构: 从main方法出发,从头往下依次执行…
- 选择结构: if,switch
- 循环结构: while,do while,for
1. if单分支
语法结构:
if(关系表达式){
语句;
}
执行流程: 关系表达式成立,则执行括号中的语句;不成立则不执行
案例: 如果张三同学考试及格,则请全班吃饭
import java.util.Scanner; //1.导包 导入控制台的类
public class If1{
public static void main(String[] args){
Scanner sc = new Scanner(System.in); //实例化对象
System.out.print("请输入考试成绩:");
int score = sc.nextInt();
if(score>=60){
System.out.println("考试及格,请全班吃饭");
}
}
}
2. if双分支
if双分支结构: if,else
if(关系表达式){
语句1;
}else{
语句2;
}
执行流程: 如果关系表达式成立,则执行语句1;否则,执行语句2
案例: 如果张三考试及格,则请全班吃饭;否则,全班安慰他
System.out.print("请输入考试成绩:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(score>=60){
System.out.println("考试及格,请全班吃饭");
}else{
System.out.println("很遗憾,不及格;以后就习惯了!");
}
3. if多分支
if多分支结构: 多选一
语法:
if(关系表达式1){
语句1;
}else if(关系表达式2){
语句2;
}...
else if(关系表达式n){
语句n;
}else{
最后的语句;
}
执行流程: 如果关系表达式1成立则执行语句1;否则,如果关系表达式n成立则执行n;否则,执行最后的
案例: 根据钱包厚度决定请吃饭豪华度
1万以上---海鲜大餐
1千以上---大排档
1百以上---麻辣烫
10元以上--快餐
否则------不吃
System.out.print("请输入你的钱包金额:");
Scanner sc = new Scanner(System.in);
int money = sc.nextInt();
/*
if(money>=10000){
System.out.println("吃海鲜大餐");
}else if(money>=1000&&money<10000){
System.out.println("吃大排档");
}else if(money>=100&&money<1000){
System.out.println("吃麻辣烫");
}else if(money>=10&&money<100){
System.out.println("吃快餐");
}else{ //上面的条件都不成立,则执行else里的代码
System.out.println("没钱吃饭,先饿一顿!");
}*/
//优化:
if(money>=10000){
System.out.println("吃海鲜大餐");
}else if(money>=1000){ //隐含了money<10000
System.out.println("吃大排档");
}else if(money>=100){ //隐含了money<1000
System.out.println("吃麻辣烫");
}else if(money>=10){ //隐含了money<100
System.out.println("吃快餐");
}else{ //上面的条件都不成立,则执行else里的代码
System.out.println("没钱吃饭,先饿一顿!");
}
特点整理:
- if往往用于判断个范围; if判断要么从小到大,要么从大到小
- if多分支往往后面需要加else更完整
4. if嵌套
if嵌套: if语句中,又包含了if结构
if嵌套特点: 先执行外层的if,再执行内层
案例: 输入学生的成绩,打印出对应的等级
90-100 A
80~89 B
70~79 C
60~69 D
60以下 E
System.out.print("请输入百分制成绩:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(score>=0&&score<=100){
if(score>=90){
System.out.println("A");
}else if(score>=80){
System.out.println("B");
}else if(score>=70){
System.out.println("C");
}else if(score>=60){
System.out.println("D");
}else{
System.out.println("E");
}
}else{
System.out.println("输入有误~请重新输入!");
}
二、switch分支
switch分支与if分支结构类似,都是用于
选择结构
;只是switch
主要用于等值判断
的匹配,而if
主要用于判断一个范围
1. switch使用
语法:
swtich(变量){
case 值1:
语句1;
break; //跳出switch
case 值2:
语句2;
break;
...
case 值n:
语句n;
break;
default: //前面都不匹配,则执行default 类似if多分支的最后一个else
退出语句提示;
break;
}
执行流程: 变量匹配case值,匹配上了,则执行里面的语句并退出;如果case都不匹配,则执行最后的default
案例: 请打印一周的伙食
System.out.print("请输入一周的伙食(1~5):");
Scanner sc = new Scanner(System.in);
int week = sc.nextInt();
switch(week){
case 1:
System.out.println("鲍鱼");
break; //如果没有break,则匹配上后,则会依次往下执行,直到遇到break
case 2:
System.out.println("猪脚饭");
break;
case 3:
System.out.println("泡面");
break;
case 4:
case 5: //特殊场景
System.out.println("馒头");
break;
default:
System.out.println("输入有误~");
break;
}
2. switch匹配字符串
注意: 在JDK1.7之后,switch匹配的变量可以是byte,short,int,char,String等
案例: 请输入四大美女的名字,打印对应的名号
System.out.print("请输入四大美女姓名:");
Scanner sc = new Scanner(System.in);
String name = sc.next();
switch(name){
case "王昭君":
System.out.println("落雁");
break;
case "貂蝉":
System.out.println("闭月");
break;
case "杨玉环":
System.out.println("羞花");
break;
case "西施":
System.out.println("沉鱼");
break;
default:
System.out.println("你的输入有误~");
break;
}
小结: if和switch都是选择结构,但他们的应用场景不同:
往往
if会更常用
,if倾向于用在判断范围;switch倾向于用在等值匹配