顺序控制
程序从上到下逐行的执行,中间没有任何判断和跳转。
分支结构
if-else:让 程序有选择的执行
单分支:
if(条件表达式){
执行代码块
}
说明:当条件表达式是ture时,执行{}代码块,反之。
Scanner scanner = new Scanner(System.in);
int age = scanner.nextInt();
if (age>18){
System.out.println("年龄大于18");
}
System.out.println("年龄小于18");
14
年龄小于18
双分支:
if(条件表达式){
执行代码块1
}
else{
执行代码块 2
}
说明:当条件表达式是ture时,执行{}代码块1,反之,执行代码块2
Scanner scanner = new Scanner(System.in);
int age = scanner.nextInt();
if (age>18){
System.out.println("年龄大于18");
}else {
System.out.println("年龄小于18");
}
21
年龄大于18
多分支:
if(条件表达式){
执行代码块1
}
else if(条件表达式2){
执行代码块 2
}
。。。。。
else{
执行代码块N
}
说明:
1.当条件表达式1成立时,即执行代码块1
2.如果表达式1不成立,才去判断表达式2是否成立
3.如果表达式2成立,就执行代码块2
Scanner scanner = new Scanner(System.in); int i = scanner.nextInt(); if (i >= 1 && i <= 100) { if (i == 100) { System.out.println("极好"); } else if (i > 80 && i <= 90) { System.out.println("优秀"); } else if (i >= 60 && i <= 80) { System.out.println("一般"); } else { System.out.println("不及格"); } }else { System.out.println("请输入0~100"); } }
67
一般
嵌套分支
在一个分支结构中又完整的嵌套了另外一个完整的分支结构,里面的分支结构曾为内分支,外面的分支结构曾为外分支。
基本语法:
if(){
if(){
else{
}
}
}
可读性差,最好避免。
Scanner scanner = new Scanner(System.in);
int yue = scanner.nextInt();
int age = scanner.nextInt();
if (yue >= 4 && yue <= 10) {
if (age < 18) {
System.out.println("30元");
} else if (age >= 18 && age < 60){
System.out.println("60元");
}else {
System.out.println("20元");
}
} else {
if (age >= 18 && age < 60) {
System.out.println("40元");
}else {
System.out.println("20元");
}
}
}
switch分支控制
基本语法:
switch(表达式){
case 常量1:
语句块1;
break;
case 常量2:
语句块2;
break;
...
case 常量n:
语句块n;
default:
语句块
break;
}
说明:
1.switch关键字,表示swtich分支
2.表达式 对应一个值
3.case 常量1 :当表达式的值等于常量1,就执行语句块1
4.break:表示退出swtich
5.没有匹配到常量1,就匹配case常量2
6.如果一个都没有匹配上,执行default
Scanner scanner = new Scanner(System.in);
char c = scanner.next().charAt(0);
switch (c){
case 'a' :
System.out.println("今天星期一");
break;
case 'b' :
System.out.println("今天星期二");
break;
case 'c' :
System.out.println("今天星期三");
break;
default:
System.out.println("没有找到");
}
b
今天星期二
注意与细节:
1.表达式数据类型,应该和case的常量类型一致。
2.switch(表达式)中表达式的返回值必须是(byte,short,char,enum,String)
3.case子句中的值必须是常量,而不是变量
4.defaulte子句是可选的,当没有匹配的case时,执行default
5.break语句用来执行完一个case分支后使用程序跳出语句块。
switch和if的比较
1.如果判断的具体数值不多,而且符合byte,int,char,枚举,String,short6种类型,建议使用switch
2.对区间判断,对结果为boolean类型判断,使用if