【Java 分支语句详解 之 If 】

Java 分支语句详解 之If - else

在这里插入图片描述

在编程过程中,我们经常需要根据不同的条件执行不同的代码块,这种流程控制被称为 分支语句。在 Java 中,常见的分支控制结构有 if-elseswitch。本文将详细介绍 if 分支结构的使用方法以及相关的代码示例。


一、单分支控制语句 (if)

基本语法:

if (条件表达式) {
    // 执行代码块,当条件表达式为 true 时执行
}

流程图
在这里插入图片描述

说明:
当条件表达式为 true 时,执行代码块;如果为 false,则不执行代码块。如果代码块中只有一条语句,可以省略大括号 {}


示例:

import java.util.Scanner;

public class If01 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入你的年龄:");
        int age = in.nextInt();
        
        if (age >= 18) {
            System.out.println("小伙子好好学习,不然以后出去要搬砖哈~");
        }
    }
}

在这个例子中,程序会根据用户输入的年龄来判断是否输出提示语。只有当年龄大于等于 18 岁时,才会输出 “小伙子好好学习”。


二、双分支控制语句 (if-else)

基本语法:

if (条件表达式) {
    // 执行代码块1,当条件为 true 时执行
} else {
    // 执行代码块2,当条件为 false 时执行
}

在这里插入图片描述

说明:
if 语句用于条件判断,如果条件表达式为 true,则执行 if 块中的代码;否则,执行 else 块中的代码。

示例:

import java.util.Scanner;

public class If02 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入年龄:");
        int age = in.nextInt();
        
        if (age >= 18) {
            System.out.println("你已经满十八岁,不努力就去搬砖。");
        } else {
            System.out.println("你还小,好好学习~");
        }
        
        System.out.println("程序继续运行。。。");
    }
}

这个例子展示了双分支控制。程序根据年龄输出不同的提示语,并且无论哪个分支执行,程序最后都会输出 “程序继续运行”。


三、多分支控制语句 (if-else if-else)

基本语法:

if (条件表达式1) {
    // 执行代码块1
} else if (条件表达式2) {
    // 执行代码块2
} else {
    // 执行代码块n
}

在这里插入图片描述

说明:
多分支控制语句用于处理多个条件,每个条件依次判断,直到找到一个满足条件的分支并执行其代码块。如果所有条件都不满足,执行 else 中的代码。

示例:

import java.util.Scanner;

public class If03 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入您的信用积分:");
        int credit = in.nextInt();
        
        if (credit >= 0 && credit <= 100) {
            if (credit == 100) {
                System.out.println("你的信用等级:信用极好!");
            } else if (credit > 80) {
                System.out.println("你的信用等级:信用优秀!");
            } else if (credit >= 60) {
                System.out.println("你的信用等级:信用一般!");
            } else {
                System.out.println("你的信用等级:信用不及格!");
            }
        } else {
            System.out.println("输入有误,请重新输入!!!");
        }
    }
}

这个程序根据用户输入的信用积分来判断信用等级。每个信用等级有相应的分数区间,程序会根据不同的分数输出相应的信用等级。


四、嵌套分支控制语句

基本语法:

if (条件表达式1) {
    if (条件表达式2) {
        // 执行代码块1
    } else {
        // 执行代码块2
    }
} else {
    // 执行代码块n
}

在这里插入图片描述

说明:
在一个 ifelse 分支中再嵌套 if-else 语句。注意不要嵌套太多层,避免代码过于复杂。

示例:

import java.util.Scanner;

public class NestedIf {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入您的所得分数:");
        double score = in.nextDouble();
        
        if (score > 8.0) {
            System.out.println("请输入您的性别(男/女):");
            char gender = in.next().charAt(0);
            
            if (gender == '男') {
                System.out.println("成功晋级,男子组!");
            } else if (gender == '女') {
                System.out.println("成功晋级,女子组!");
            } else {
                System.out.println("输入的性别无效!");
            }
        } else {
            System.out.println("很遗憾,您未能晋级。");
        }
    }
}

这个例子展示了嵌套分支的使用,根据用户输入的分数和性别,决定用户是否晋级以及晋级的组别。
注意点 .charAt(0): 这是一个 String 类的方法,用于获取字符串中的第一个字符。charAt(0) 会返回字符串的第一个字符,因此它在这里被用来从 next() 方法返回的字符串中提取第一个字符。


五、示例:出票系统

需求:
根据淡旺季月份和年龄,打印票价:

  • 旺季(4-10 月):成人(18-60 岁)票价为 60 元,儿童半价,老人三分之一价格。
  • 淡季:成人票价为 40 元,儿童和老人票价为 20 元。

示例代码:

import java.util.Scanner;

public class TicketSystem {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入购票月份:");
        int month = in.nextInt();
        
        System.out.println("请输入您的年龄:");
        int age = in.nextInt();

        // 检查月份是否合理
        if (month < 1 || month > 12) {
            System.out.println("无效的月份,请输入1到12之间的月份。");
            return;
        }

        // 旺季 4-10 月
        if (month >= 4 && month <= 10) {
            if (age >= 18 && age <= 60) {
                System.out.println("你的票价为 60 元");
            } else if (age < 18) {
                System.out.println("你的票价为 30 元(儿童票)");
            } else {
                System.out.println("你的票价为 20 元(老人票)");
            }
        } else { // 淡季
            if (age >= 18 && age <= 60) {
                System.out.println("你的票价为 40 元");
            } else {
                System.out.println("你的票价为 20 元");
            }
        }
    }
}

这个例子展示了如何根据月份和年龄判断票价,程序会根据用户输入的月份和年龄来决定输出不同的票价。


六、常见错误

等号 == 与赋值符号 = 的区别:

在条件判断中,常见的错误是将比较符号 == 误写为赋值符号 =。例如:

boolean b = true;

if (b = false) {
    System.out.println("a");
} else if (b) {
    System.out.println("b");
} else if (!b) {
    System.out.println("c");
} else {
    System.out.println("d");
}

在这段代码中,if(b = false) 是将 b 赋值为 false,因此输出会是 “c”。这个错误很常见,应当特别注意。


七、总结

分支语句是控制程序执行流程的重要工具。通过合理使用 if-else 和嵌套分支,可以让程序根据不同的条件执行不同的操作,极大地增强了程序的灵活性。注意在分支语句中合理组织条件,避免过多的嵌套,提高代码的可读性和维护性。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yhame.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值