if分支结构
- if语句第一种格式:if
if (关系表达式) {
语句体;
}
- 执行流程
首先执行关系表达式,关系表达式的结果是一个boolean类型
如果结果是true就执行语句体
如果结果是false就不执行语句体
最后都会执行到大括号之外
代码演示
```java
/*1.判断一个字符类型char的变量*/
class Demo1{
public static void main(String[] args){
//定义一个字符类型char的变量
char ch='B';
/*
代码结构安排的明明白白的!!!
*/
if(ch >= 'A' && ch <= 'Z') {
System.out.println("这里是一个大写字母!!!");
}
System.out.println("大括号之外的语句!!!");
}
}
- if语句第二种格式:if else
if (关系表达式) {
语句体1;
} else {
语句体2;
}
- 执行流程
首先判断关系表达式看其结果是true还是false
如果结果是true就执行语句体1
如果结果是false就执行语句体2
对于if语句,有个很容易出现的逻辑错误,这个逻辑错误并不属于语法问题,但引起错误的可能性更大,如下程序
/*错误代码演示*/
public class IfErrorTest{
public static void main(String[] args){
int age = 45;
if (age > 20){
System.out.println("青年人");
} else if (age >40 ) {
System.out.println("中年人");
} else if (age > 60) {
System.out.println("老年人");
}
}
}
运行上面的程序,发现打印结果是 :青年人,而实际上希望45岁应判断为中年人-----这里出现了逻辑错误
因为age > 20 的范围大于 age >45,所以在执行if (age > 20)时,表达式是正确的,然后就输出青年人。
为了避免出现上面的错误,在使用if…else语句时有一条基本原则:总是优先把范围小的条件放在前面处理。如age > 60 和age >20两个条件,明显age > 60的范围更小,所以应该处理age > 60的情况
正确代码演示
public class IfTest{
public static void main(String[] args){
int age = 45;
if (age > 60){
System.out.println("老年人");
} else if (age >40 ) {
System.out.println("中年人");
} else if (age > 20) {
System.out.println("青年人");
}
}
}
- if语句第二种格式:if…else if … else
if (判断条件1) {
执行语句1;
} else if (判断条件2) {
执行语句2
}
…
} else if (判断条件n) {
执行语句n;
} else {
执行语句n+1;
}
- 执行流程
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n+1.
代码演示
/*
学生成绩的等级划分:
90 ~ 100 优秀
80 ~ 90 良好
70 ~ 80 中等
60 ~ 70 及格
60 以下 不及格
*/
class Demo10 {
public static void main(String[] args) {
/*
成绩考虑存在0.5的情况,需要使用浮点类型数据
这里采用float类型,这里赋值一个初值
*/
float score = 88.0F;
/* 成绩等级判断 */
if (score >= 90 && score <= 100) {
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("不及格");
}
}
}
注意:
1、if 、else 、else if 后的条件要么是一个花括号括起来的代码块,则这个代码块整体作为条件执行体;要么是以分号为结束符的第一行语句,甚至可能是一个空语句(空语句是一个分号),那么就只是这条语句作为执行体。
2、使用 if …else语句时,一定要先处理包含范围更小的情况。