走进 Java的知识海洋(十二)Java 分支结构(if...else)

Java 分支结构 if…else

引言

前面我们说了Java的键盘录入,大家可以随心所欲的输入自己想输入的想法、语句、数字
等等,不知道有没有细心的小伙们发现,我在附带的代码中编写着一句,if(xxx){},那这到底是什么呢,今天我们就来好好说道说道!

流程控制

在说分支结构前,首先我们先来说下 流程控制

定义

流程

什么是流程呢?

在一个程序中,有很多的代码,这些代码的执行顺序,就是流程

流程控制

用于控制代码流程的方式,就是流程控制

分类

Java 中流程控制结构可分为 顺序结构分支结构循环结构 这三类。下面简单介绍下这三类。

  • 顺序结构

    顺序结构就是代码从上到下,从左到右依次执行

  • 分支结构

    分支结构当到达某个状态时,可能会有多种情况,每种情况都需要提前准备好,所以多条路的路口就是一个分支

    代码写得多,程序运行的少。

  • 循环结构

    循环结构某段代码相同或者相似,可以使用相同的逻辑。使用一定的格式,来完成相同代码的反复执行

    代码写的少,程序运行次数多。

顺序结构,我们就不细说了,你的代码是如何写的,程序就会怎么走,从上到下,从左到右按顺序执行。虽然它也能解决计算、输出等问题,但不能做判断再选择。走指定的分支,所以对于要先做判断再选择的问题就要使用分支结构!

今天我们来说下第二种 分支结构,如何让程序走指定的分支!

分支结构

分支结构上文刚也简单介绍了下,到达某个状态时,可能会有多种情况,每种情况都需要提前准备好,所以多条路的路口就是一个分支。它的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序一般适合于带有逻辑或关系比较等条件判断的计算

学习分支结构不要被分支嵌套迷惑,大家可以先画流程图,只要正确绘制出流程图弄清各分支所要执行的功能嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。下面我介绍几种基本的分支结构。

分类

分支结构主要的实现格式分为 if 语句switch 语句

  • if语句

    if如果的意思,满足了这种条件,才能执行相应的代码,实现不同的逻辑

    语句格式主要包含 ifif...elseif...else if...else if....else 这三种格式

  • switch语句

    根据某个变量的值,判断符合哪种执行条件

    语句格式只有 switch case 一种格式

拆分来说的话,主要分为 单一分支体双分支体嵌套分支语句switch开关语句 这几种基本的分支结构。

今天我们主要来说 if 语句

if 的第一种格式 (单一分支体) —— if 语句

语句

if 语句的语句格式如下

if(布尔表达式){
   语句体;
   //如果布尔表达式为true将执行的语句
}

语句说明

  • if语句 后面跟着的小括号,里面 必须是 boolean类型 的值if语句后面的小括号中,只要是计算结果为boolean类型,就合法

  • if 大括号里面的语句体,可以是任意操作

执行流程

  1. 计算布尔表达式的值,要么为true、要么为false

  2. 如果计算结果为true,执行语句体

  3. 如果计算结果为false,就不执行语句体

示例

键盘录入一个年龄,使用 if 语句判断输入的年龄是否大于 18若小于结果为false直接执行 "谢谢光临,若大于则为true,进入if 语句体,执行打印语句。

import java.util.Scanner;

public class IfYuJu {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请录入您的年龄:");
        
        int age = sc.nextInt();//录入年龄
        
        if (age > 18) {//判断是否大于18
            
            //如果满足条件才运行这句话
            System.out.println("您可以进入网吧");
        }
        
        //无论if的判断如何,都会执行的一句话
        System.out.println("谢谢光临");
    }
}

运行结果

请录入您的年龄: 26
您可以进入网吧
谢谢光临

看到结果可一目了然。接下来我们来说 if 的第二种语句格式

if 的第二种格式 (双分支体) —— if…else 语句

语句

if...else 语句的语句格式如下

if(布尔表达式){
   语句体1;
   //如果布尔表达式的值为true
}else{
   语句体2;
   //如果布尔表达式的值为false
}

语句说明

  • 是否有某种情况可以语句体1语句体2都不执行

    不可能else就已经包含了if不满足的所有状态

  • 是否有某种情况可以让语句体1语句体2都执行

    不可能因为只要语句体1执行了,if语句就直接结束了

  • 只能执行其中的一句语句体并且一定会执行其中一句

执行流程

  1. 计算条件表达式的值,要么是true、要么是false

  2. 如果条件表达式的值为true,执行语句体1

  3. 如果条件表达式的值为false,执行语句体2

示例

import java.util.Scanner;

public class IfElseYuJu {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("又到双十一了,该不该剁手呢?\n选择 ' 1 ' 将进入剁手时刻!");
        
        int x = sc.nextInt();
        if (x == 1) {
        
            //如果满足条件才运行 语句体1
            System.out.println("剁手准备");
        } else {
            //当不满足条件时都会运行 else 语句体2
            System.out.println("回家睡着去吧");
        }
    }

}

运行结果

又到双十一了,该不该剁手呢?
选择 ' 1 ' 将进入剁手时刻!
2
回家睡着去吧

从结果可以看出,当输入的数字不为 1 时 ,结果为 false ,就会直接进入 else 语句中执行语句体2

下面我们来讲 if 的最后一个语句格式。

if 的第三种格式 (嵌套分支语句) —— if…else if…else 语句

语句

if...else if...else 语句的语句格式如下

if(布尔表达式 1){
   语句体1;
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   语句体2;
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   语句体3;
   //如果布尔表达式 3的值为true执行代码
   
...

}else if(布尔表达式 n){
   语句体n;
   //如果布尔表达式 n的值为true执行代码
}else {
   语句体n+1;
   //如果以上布尔表达式都不为true执行代码
}

语句说明

  • 如果 条件表达式2 计算结果为 true执行语句体2其实这个条件的完整版本:条件表达式1 不满足,并且条件表达式2 满足

  • 最后的else语句 可以有 也可以没有如果有,就一定有执行的内容,如果没有就可能什么都执行不了

  • 语句体1 ~ 语句体n+1 是否有可能执行两句或者两句以上

    不可能只要其中一条语句执行了,if语句就结束了

  • 语句体1 ~ 语句体n+1 是否有可能一句都不执行

    有两种情况,如果没有else语句就可能一个语句体都不执行如果有else语句就一定会执行其中的一句

执行流程

  1. 计算条件表达式1,如果为 true,就执行 语句体1

  2. 如果 条件表达式1 为 false,计算条件 表达式2,如果为 true,就执行 语句体2

  3. 如果 条件表达式2 位 false,就计算条件表达式3…

  4. 如果 条件表达式1 ~ 条件表达式n 全都为 false,那么就执行语句体 n+1

使用应注意

  • if 语句至多有 1 个 else 语句else 语句在所有的 else if 语句之后

  • if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。

  • 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。

示例

one

此实例使用if…else if…else 语句,判断键盘输入的数字,是否为 1 、2 、3 ,若输入的数为1,则输出打印语句体1 ,结束判断语句,输入为2 ,则输出打印语句体2 ,若输入的数为3, 则输出打印语句体3,若输入的数不为1、2、3 则都会进入else 执行else 内语句体。

import java.util.Scanner;

public class IfElseYuJu {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("又到双十一了,该不该剁手呢?\n请输入数字挑选你的命运!");
        int x = sc.nextInt();
        if (x == 1) {

            System.out.println("剁手准备");
        } else if (x == 2) {

            System.out.println("忍会儿,攒点钱");
        } else if (x == 3) {

            System.out.println("昨天已经买过了,等到春节再买");
        } else {

            System.out.println("回家睡着去吧");
        }
    }

}
运行结果
又到双十一了,该不该剁手呢?
请输入数字挑选你的命运!
3
昨天已经买过了,等到春节再买

这时候可以看到,当我输入的值为3时,程序执行了 语句体3 。打印了 “昨天已经买过了,等到春节再买” 这句话!

two
public class IfElseIfElseYuJu {

    public static void main(String[] args) {
        int i;
        int j = 10;
        if (j > 100) {
            i = 10;
        } else if (j > 50) {
            i = 5;
        } else if (j > 10) {
            i = 1;
        } else if (j <= 10) {
            i = 0;
        }
        //可能尚未初始化变量i,没有else语句,所以可能一个语句体都执行不了
        System.out.println(i);
    }

}

此时编译没法通过 报错显示可能尚未初始化变量i

在这里插入图片描述

所以这样子写是不允许的!应首先给变量 i 赋一个初始值!

int i = 0;

最后,if 语句还有一种使用方法,使用率也是较为繁多的!

它也是嵌套性的,具体是如何使用的,我们接着往下看!

嵌套的 if…else 语句

特别提示:它不属于 if 的语句格式,因为 使用嵌套的 if…else 语句是合法的,它只是在if…else 语句中嵌套了一个 if…else 语句

也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句

语句

嵌套的 if…else 语句格式如下:

if(布尔表达式 1){
   语句体1;
   如果布尔表达式 1的值为true执行代码
   if(布尔表达式 2){
      语句体2;
      如果布尔表达式 2的值为true执行代码
   }
}

你可以像 if 语句一样嵌套 else if…else。

实例

public class Test {
 
    public static void main(String args[]){
        int x = 30;
        int y = 10;

        if (x == 30) {
            System.out.println("X = 30");
            if (y == 10) {
                System.out.println("X = 30 and Y = 10");
            }
        }
    }
}

运行结果

X = 30
X = 30 and Y = 10

可以看出 布尔表达式 1 和 2 执行的结果都为 true ,所以语句体1 和 语句体2 都执行了,你可以根据个人需求嵌套多个if…else 这都是完全没有问题的!

特别注意

看到这分支结构 if 语句就分解到这里了。 但是还是有一点重要的注意要给大家说,以免小伙伴们入坑!

  • if 后面跟着的小括号里面,必须是 boolean 的值

  • if 后面跟着的小括号里面,只要计算结果为 boolean类型,就算合法

  • 在小括号后面不要加分号,一般来说,有左大括号,就没有分号,有分号,就没有左大括号

  • 所有的语句体都可以是任意语句。如果语句体只有一句,那么大括号可以省略。但是建议所有情况都加上大括号,不要省略

总结

下回我们来讲分支结构的另一种格式 —— switch case 语句 ,想让程序就那个分支走哪就走哪,随心所动,随心所写,由你而掌控!那你还不赶快先去试试 if 语句,这就对了嘛,我们下回见分晓!别着急,还有更多的秘密等着你来探索!

在这里插入图片描述

分享嗨起来,美德传起来,点个星标从此探索之路不迷茫!

微信扫描二维码,关注我的原创日更公众号,可以查看更多程序的秘密!
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值