在程序中,程序运行的流程控制决定程序是如何执行的。

顺序控制

介绍: 程序从上到下的逐行的执行,中间没有任何判断和跳转。

使用:java中定义变量时,采用合法的前向引用。如:

public class Test{
	int num1 = 12;
	int num2 = num1 + 2;
	System.out.println(num2);

	// 错误写法
	int num2 = num1 + 2;    
	int num1 = 12;
}

分支控制(if, else,switch)

介绍:让程序有选择的执行,分支控制有三种

1)单分支

if (条件表达式){
  执行代码块;(可以有多条语句)
}

当条件表达式为true时,就会执行{}的代码。如果为false时,就不执行。

特别注意:如果{}中只有一条语句时,可以不用{},建议写上{}。

// if 的快速入门
import java.util.Scanner;
public class if01{
	public static void main(String[] args) {
		// 输入人的年龄,大于18,则输出:成年人。
		// 思路分析:
		// 1、接收输入的年龄
		// 2、把年龄保存到变量
		// 3、使用if判断
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入年龄:");
		int age = myScanner.nextInt();
		if (age > 18){
			System.out.println("年龄大于18岁,是成年人了");	
		}
		System.out.println("程序继续执行");
	}
}

java 年龄段判断_代码块

2)双分支

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

当条件表达式成立时,及执行代码块1,否则执行代码块2。如果执行的代码块只有一条语句,则{}可以省略,不推荐使用。

// if 的快速入门
import java.util.Scanner;
public class if01{
	public static void main(String[] args) {
		// 输入人的年龄,大于18,则输出:成年人。
		// 思路分析:
		// 1、接收输入的年龄
		// 2、把年龄保存到变量
		// 3、使用if,else判断
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入年龄:");
		int age = myScanner.nextInt();
		if (age > 18){
			System.out.println("年龄大于18岁,是成年人了");	
		} else { // 双分支
			System.out.println("年龄小于18岁,未成年");
		}
		System.out.println("程序继续执行");
	}
}

java 年龄段判断_java 年龄段判断_02

测试题

public class IfExercise01{
	public static void main(String[] args) {
		// 声明两个double类型的变量并赋值
		// 判断当第一个数大于10.0,且第二个数小于20.0时,打印两数之和。
		double num1 = 13;
		double num2 = 12;
		if (num1 >10 && num2 < 20){
			System.out.println("输出结果" + (num1 + num2));
		}
	}
}
public class IfExercise01{
	public static void main(String[] args) {
		// 声明两个int类型的变量并赋值,判断两者之和是否能被3又能被5整除,打印提示信息。
		int num1 = 12;
		int num2 = 18;
		int sum = num1 + num2;
		if (sum % 3 ==0 && sum % 5==0){
			System.out.println("两数之和可以整除3和5");
		}
	}
}

3)多分支

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

java 年龄段判断_java 年龄段判断_03

特别说明:

  • 多分支,可以没有else。
// if 的快速入门
import java.util.Scanner;
public class if01{
	public static void main(String[] args) {
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入信用分:");
		// 如果输入的是一个字符串该怎么办呢,这里使用异常处理进行解决。
		int score = myScanner.nextInt();
		if (score <= 100 && score >0){
			if (score ==100){
				System.out.println("信用极好");
			} else if (80<score && score <=99) {
				System.out.println("信用优秀!!!");
			} else if (60 <= score && score <= 80) {
				System.out.println("信用一般");
			} else {
				System.out.println("信用不及格");
			}
		} else {
			System.out.println("信用分需要在1-100之间,请重新输入");
		}
	}
}

switch分支结构

switch(表达式){
  case 常量1:
    语句块1;
    break;
  case 常量2:
    语句块2;
    break;
  case 常量n:
    语句块n;
    break;
  default:
    default语句块;
}

1、witch关键字,表示switch分支

2、表达式对应一个值,可以是返回的值

3、case 常量1; 当表达式的值等于常量1时,就执行语句块1

4、break: 表示退出switch

5、如果和case常量1匹配就执行语句块1,如果不匹配则继续匹配case 常量2

6、如果一个都没有匹配上,则执行default。

java 年龄段判断_java_04

switch注意事项和细节讨论

1、表达式中的数据类型,应该和case中的常量类型一致,或者是可以自动转成可以相互比较的类型。

2、switch中的表达式返回值必须是:byte、short、int、char、enum、String 注意没有double

通过1和2两个规则,决定了在case中byte、short、int、char为一类【自动提升为int类型】,string自己一类,enum之后再说。

3、case 中的值必须是常量,不能是变量。

4、default子句是可选的,也可以不写,当不写时,如果前面的case都不匹配时,则输出为空。

5、break语句用来在执行完case分支后使程序跳出switch语句块,如果没有break,程序会顺序执行到switch结尾。

练习题

java 年龄段判断_System_05


java 年龄段判断_代码块_06

int num = 12;
switch (num){
	case 3:
	case 4:
	case 5:
		System.out.println("春季");
		System.out.println("春季");
		break;
	case 6:
	case 7:
	case 8:
		System.out.println("夏季");
		System.out.println("夏季");
		break;
	case 9:
	case 10:
	case 11:
		System.out.println("秋季");
		System.out.println("秋季");
		break;
	case 12:
	case 1:
	case 2:
		System.out.println("冬季");
		System.out.println("冬季");
		break;
}

注意:switch中的default和break的作用范围。

switch和if的比较

1、如果判断的具体数值不多,而且符合 byte、short、int、char、enum、String这6种类型。虽然两个语句都可以使用,建议使用switch语句

2、其他情况,对区间的判断,对结果为bioolean类型判断,使用if,if的使用范围更广。