首页 > 其他 > 详细

四、流程控制--if else

时间:2021-01-21 12:26:26      阅读:28      评论:0      收藏:0      [点我收藏+]

 

 

一、if else语句

if 结构

if 语句是使用最多的条件分支结构,它属于选择语句,也可以称为条件语句。

if 选择结构是根据条件判断之后再做处理的一种语法结构。默认情况下,if 语句控制着下方紧跟的一条语句的执行。不过,通过语句块,if 语句可以控制多个语句。

if 语句的最简语法格式如下,表示“如果满足某种条件,就进行某种处理”。

if (条件表达式) {
    语句块;
}

其中“条件表达式”和“语句块”是比较重要的两个地方。

  1. 条件表达式:条件表达式可以是任意一种逻辑表达式,最后返回的结果必须是一个布尔值。取值可以是一个单纯的布尔变量或常量,也可以是使用关系或布尔运算符的表达式。如果条件为真,那么执行语句块;如果条件为假,则语句块将被绕过而不被执行。
  2. 语句块:该语句块可以是一条语句也可以是多条语句。如果仅有一条语句,可省略条件语句中的大括号 {}。当从编程规范角度不要省略大括号,省略大括号会使程序的可读性变差。


if 条件语句的运行流程如图 1 所示。

技术分享图片

 

 

 

技术分享图片
图1  if 语句执行流程图

例 1

编写一个 Java 程序,允许用户从键盘输入一个数字,再判断该数是否大于 100。使用 if 语句的实现代码如下:

public static void main(String[] args) {
    System.out.println("请输入一个数字:");
    Scanner input = new Scanner(System.in);
    int num = input.nextInt(); // 接收键盘输入数据
    // 判断用户输入的数据是否大于100
    if (num > 100) {
        System.out.println("输入的数字大于100");
    }
    // 判断用户输入的数据是否等于100
    if (num == 100) {
        System.out.println("输入的数字等于100");
    }
    // 判断用户输入的数据是否小于100
    if (num < 100) {
        System.out.println("输入的数字小于100");
    }
}

运行该程序,分别使用键盘输入 99、100 和 105,结果如下所示:

请输入一个数字:
99
输入的数字小于100
请输入一个数字:
100
输入的数字等于100
请输入一个数字:
105
输入的数字大于100

if-else 结构

单 if 语句仅能在满足条件时使用,而无法执行任何其他操作(停止)。而结合 else 语句的 if 可以定义两个操作,此时的 if…else 语句表示“如果条件正确则执行一个操作,否则执行另一个操作”。

使用 if…else 语句的语法格式如下所示:

if (表达式) {
    语句块1;
} else {
    语句块2;
}

在上述语法格式中,如果 if 关键字后面的表达式成立,那么就执行语句块 1,否则的话则执行语句块 2,其运行流程如图 2 所示。

技术分享图片

 

例 子

在例 3 中为实现比较 num1 和 num2 的大小,使用了 3 个 if 条件语句分别判断大于、等于和小于的情况。下面使用 if…else 双条件来实现,具体代码如下:

public static void main(String[] args) {
    int num1 = 50;
    int num2 = 34;
    // 如果num1等于num2
    if (num1 == num2) {
        System.out.println("num1等于num2");
    }
    // 如果num1大于num2
    if (num1 > num2) {
        System.out.println("num1大于num2");
    } else {
        // 否则就是num1小于num2
        System.out.println("num1小于num2");
    }
}

双条件语句减少了代码的编写量,同时增强了程序的可读性。简化后的结果还是一样,执行后会输出“num1 大于 num2”。

多条件 if-else-if 语句

if 语句的主要功能是给程序提供一个分支。然而,有时候程序中仅仅多一个分支是远远不够的,甚至有时候程序的分支会很复杂,这就需要使用多分支的 if…else if 语句。

通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件才执行另一种处理……,这些条件都不满足则执行最后一种条件”。

if…else if 多分支语句的语法格式如下所示:

if(表达式1) {
    语句块1;
} else if(表达式2) {
    语句块2;
...
} else if(表达式n) {
    语句块n;
} else {
    语句块n+1;
}

可以看出,else-if 结构实际上是 if-else 结构的多层嵌套。明显的特点就是在多个分支中只执行一个语句组,而其他分支都不执行,所以这种结构可以用于有多种判断结果的分支中。

在使用 if…else if 语句时,依次判断表达式的值,当某个分支的条件表达式的值为 true 时,则执行该分支对应的语句块,然后跳到整个 if 语句之外继续执行程序。如果所有的表达式均为 false,则执行语句块 n+1,然后继续执行后续程序,其运行流程如图 3 所示。

技术分享图片

 

例 子

同样以比较 num1 和 num2 的大小为例,使用 if…else if 多条件的实现代码如下:

public static void main(String[] args) {
    int num1 = 50;
    int num2 = 34;
    if (num1 == num2) { // 如果num1等于num2
        System.out.println("num1等于num2");
    } else if (num1 > num2) { // 如果num1大于num2
        System.out.println("num1大于num2");
    } else { // 否则就是小于
        System.out.println("num1小于num2");
    }
}

如上述代码所示,num1 和 num2 不满足 if 语句的“num1==num2”条件,接着测试 else if 的“num1>num2”条件,满足该条件并输出“num1 大于 num2”。

嵌套 if 的使用

if 语句的用法非常灵活,不仅可以单独使用,还可以在 if 语句里嵌套另一个 if 语句。同样,if…else 语句和 if…else if 语句中也可以嵌套另一个 if 结构的语句,以完成更深层次的判断。

嵌套 if 的语法格式如下:

if(表达式1) {
    if(表达式2) {
        语句块1;
    } else {
        语句块2;
    }
} else {
    if(表达式3) {
        语句块3;
    } else if(表达式4) {
        语句块4;
    } else {
        if(表达式n) {
            语句块n;
        } else {
            语句块n+1;
        }
    }
}

在上述格式中,应该注意每一条 else 与离它最近且没有其他 else 对应的 if 相搭配,其执行流程如图 4 所示。

技术分享图片

 

例 子

活动计划安排,如果今天是工作日,去上班;如果今天是周末,则出去游玩;同时,如果周末天气晴朗,去室外游乐场游玩,否则去室内游乐场游玩。实现代码如下:

public static void main(String[] args) {
    String today = "周末";
    String weather = "晴朗";
    if (today.equals("周末")) {
        if (weather.equals("晴朗")) {
            System.out.println("去室外游乐场游玩");
        } else {
            System.out.println("去室内游乐场游玩");
        }
    } else {
        System.out.println("去上班");
    }
}

如上述代码所示,today 满足 if 语句的“today.equals("周末")”条件,接着测试 weather 是否满足“weather.equals("晴朗")”条件,满足该条件输出“去室外游乐场游玩”。

 

四、流程控制--if else

原文:https://www.cnblogs.com/rozen-lin/p/14306435.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!