Java——分支语句

控制结构是管理代码执行流程的基础。主要包括顺序控制、分支控制和循环控制。

一、顺序控制

顺序控制是最基本的控制结构,程序按照代码的书写顺序逐行执行。

public class SequentialControl {
    public static void main(String[] args) {
        int a = 5;
        int b = 10;
        int sum = a + b;

        System.out.println("Sum: " + sum); // 顺序执行
    }
}

这段代码会先执行

int a = 5;

然后执行

int b = 10;

再执行

int sum = a + b;

最后执行

System.out.println("Sum: " + sum);

这就是顺序控制。

二、分支控制

1、单分支

单分支一般使用 if 语句。

语法结构:

if (condition) {
    // 当条件为 true 时执行的代码
}

如果 condition 为 true 则执行代码块中的内容,如果 condition 为 false 则不执行代码块中的内容,直接执行后面的内容。

当代码块中的代码只有一个语句的话,可以不加 {} 。

例如:

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你的成绩");
		int score = input.nextInt();
		if(score >= 60) {
			System.out.println("真厉害,及格了");
		}
		System.out.println("...");
	}
}

当输入 66 时,score >= 60 结果为 true,所以代码块的代码得以执行。

当输入 50 时,score >= 60 结果为 false ,所以代码块的代码不会执行。

2、双分支

if-else语句用于在条件表达式为true时执行一段代码,为false时执行另一段代码。

if (condition) {
    // 当条件为 true 时执行的代码
} else {
    // 当条件为 false 时执行的代码
}

当 condition 为 true 时,会执行 if 后面的代码块,当 condition 为 false 时,会执行 else 后面的代码块。

例如:

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你的成绩");
		int score = input.nextInt();
		if(score >= 60) {
			System.out.println("真厉害,及格了");
		} else {
			System.out.println("别灰心,下次加油");
		}
	}
}

当我们输入 100 时,score >= 60 的结果为 true ,所以会执行 if 后的语句,所以运行结果为:

当我们输入 50 时,score >= 60 的结果为 false ,所以会执行 else 后的语句,所以运行结果为:

3、多分支

1)if-else if-else

else if语句用于在多重条件下执行不同的代码块。它可以有多个else if分支,最后可以有一个else分支作为所有条件都不满足时的默认执行代码。

if (condition1) {
    // 当 condition1 为 true 时执行的代码
} else if (condition2) {
    // 当 condition1 为 false 且 condition2 为 true 时执行的代码
} else if (condition3) {
    // 当 condition1 和 condition2 为 false 且 condition3 为 true 时执行的代码
} else {
    // 当所有条件都为 false 时执行的代码
}

对于双分支和多分支,只要前面有一个代码块被执行了,后面的就不会再执行了,在前面的一个代码块执行后,就会跳到这个分支的最后,执行后面的其他代码了。

例如:

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你的成绩");
		int score = input.nextInt();
		if(score < 60) {
			System.out.println("你的成绩不及格");
		} else if(score >= 60 && score < 80) {
			System.out.println("你的成绩为良等级");
		} else if(score >= 80 && score < 90) {
			System.out.println("你的成绩为优等级");
		} else {
			System.out.println("你的成绩为优加等级");
		}
	}
}

当我们输入 59 时,score < 60 为 true ,所以运行结果为:

当我们输入 66 时,条件 1 为 false,score >= 60 && score < 80 为 true ,所以运行结果为:

当我们输入 88 时,条件 1 和 2 都为 false,score >= 80 && score < 90 为 true ,所以运行结果为:

当我们输入 100 时,前面三个条件都是 false,所以执行 else 后的代码块,所以运行结果为:

2)switch

switch语句用于当一个变量符合多个可能值之一时,选择性地执行代码块。switch语句中的每个分支由一个case标签标识,最后可以有一个default分支来处理所有未匹配的情况。

switch (expression) {
    case constantValue1:
        // 当 expression == constantValue1 时执行的代码
        break;
    case constantValue2:
        // 当 expression == constantValue2 时执行的代码
        break;
    // 你可以有任意数量的 case 语句
    ...
    default:
        // 当 expression 不等于任何已定义的 case 值时执行的代码
        break;
}
  1. expression:是一个整型、字符串或枚举类型的表达式。表达式的值会被逐一与每个case的值进行比较。直到找到匹配的case,或者执行到default
  2. case:每个case后面跟随一个值和一个冒号,表示一个可能的匹配值。
  3. break:用于终止当前case块的执行,并跳出switch语句。如果省略break,将会继续执行下一个case块中的代码(即使下一个case条件不成立),这种行为称为"fall-through"。
  4. default:这是一个可选的部分,当expression不匹配任何case值时执行。这部分通常放在所有case之后。

例如:

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入");
		int day = input.nextInt();
		switch(day) {
			case 1:
				System.out.println("星期一");
				break;
			case 2:
				System.out.println("星期二");
				break;
			case 3:
				System.out.println("星期三");
				break;
			case 4:
				System.out.println("星期四");
				break;
			case 5:
				System.out.println("星期五");
				break;
			case 6:
				System.out.println("星期六");
				break;
			case 7:
				System.out.println("星期日");
				break;
			default :
				System.out.println("输入错误");
				break;
		}
	}
}

当我们输入 2 时,与第二个 case 匹配,会执行第二个代码块,然后 break 退出 switch 语句。所以运行结果:

switch 补充

switch 后圆括号中的表达式应当与 case 语句后的常量类型相匹配,或者可以自动类型转换。

如果使用不兼容的类型,是没法通过编译的。例如下面这个就是错的:

        switch(29) {
			case "Hello":
				System.out.println("Hello World");
				break;
			case 1:
				System.out.println("1");
				break;
			default :
				System.out.println("Error");
				break;
		}

在编译时会报错:

对于大于等于 60 分的打印合格,小于 60 分的打印不合格,要求使用 switch 语句。

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入成绩");
		int score = input.nextInt();
		if(score >= 0 && score <= 100) {
			switch(score / 60) {
				case 0:
					System.out.println("不合格");
					break;
				case 1:
					System.out.println("合格");
					break;
			}
		} else {
			System.out.println("输入范围错误");
		}
	}
}

当我们输入 66 ,运行结果:

嵌套分支语句

上面所说的分支语句都是可以相互嵌套的。

例如:

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入你的成绩(0~100)");
		int score = input.nextInt();
		if(score >= 0 && score <=100) {
			if(score < 60) {
				System.out.println("你的成绩不及格");
			} else if(score >= 60 && score < 80) {
				System.out.println("你的成绩为良等级");
			} else if(score >= 80 && score < 90) {
				System.out.println("你的成绩为优等级");
			} else {
				System.out.println("你的成绩为优加等级");
			}
		} else {
			System.out.println("成绩不在正常范围");
		}
	}
}

当我们输入 222 时,score >= 0 && score <=100 结果为 false ,所以执行外层循环的 else 后的代码块,所以运行结果为:

三、if else 分支和 switch 分支选择

当判断一个范围或者是 boolean 类型的时候,使用 if else ;当使用可以有限个列举的值的时候使用 switch 。

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值