Java程序控制结构(1)

119 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情

一、程序流程控制分类

1)顺序控制

2)分支控制

3)循环控制

二、顺序控制

(1)特点

顺序控制的程序从上到下逐一执行,中间不会出现判断以及跳转。

(2)举例

// 正确形式
public class control {
    public static void main(String[] args) {
        int a = 1;
        int b = a + 1;
        System.out.println(a + b);
    }
}
 
// 错误形式
public class control {
    public static void main(String[] args) {
        int b = a + 1;
        int a = 1;
        System.out.println(a + b);
    }
}

三、分支控制

(1)分类

1)单分支 if

2)双分支 if - else

3)多分支 if - else if - else

(2)单分支

1)基本语法

    if(条件表达式) {

            代码块;(可以包含多条语句)

}

2)执行顺序

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

(3)双分支

1)基本语法

    if(条件表达式) {

            代码块1;(可以包含多条语句)

} else { 代码块2;

}

2)执行顺序

    当条件表达式为 true 时,就会执行代码块1。如果为 false ,就执行 else 中的代码块2

(4)多分支

1)基本语法

    if(条件表达式1) {

            代码块1;(可以包含多条语句)

} else if(条件表达式2){

    代码块2;

}

……

else {

    代码块n;

}

2)执行顺序

当条件表达式1为 true 时,就会执行代码块1。如果为 false ,就执行 else if 后的条件表达式2,如果结果为 true 则执行代码块2,否则继续往后判断,以此类推。

如所有条件表达式都不成立则执行 else 中的代码块。

3)注意

不管是双分支还是多分支,都只有一个执行入口。

四、嵌套分支

1)介绍

嵌套分支就是在一个分支结构中又完整的嵌套了另一个完整的分支结构。

2)基本语法

if(条件表达式1){

    if(条件表达式2){
            代码块1;

    } else {

            代码块2;

    }

} else {

    代码块3;

}

五、switch分支结构

(1)基本语法

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

1)switch 关键字,表示 switch 分支

2)表达式对应着一个值

3)case 常量n,表示当表达式的值等于n时,就执行 语句块n

4)break 表示结束switch

5)如果都没有和 case 匹配成功则执行 default

(2)switch使用细节

1)表达式数据类型,应和 case 后的常量类型一致或者hi可以自动转成互相比较的类型,比如输入的是字符,而常量是 int

2)switch(表达式)中表达式的返回值必须是:(byte short int char enum[枚举] String)

3)default语句是可选的,当没有与case匹配的常量时,执行default后的语句

4)case子句中的值必须是常量(1,'a'),而不能是变量

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

(3)switch练习

对学生成绩大于60分,输出"合格"。低于60分的,输出"不合格"。(注:输入的成绩不能大于100),提示 成绩/60

import java.util.Scanner;
public class SwitchExercise {
	public static void main(String[] args) {
    
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入成绩:");
		double score = myScanner.nextDouble();
		if(score >= 0 && score <= 100){
			switch ((int)(score / 60)) {
				case 0 :
					System.out.println("您的成绩不合格");
					break;
				case 1 :
					System.out.println("您的成绩合格");
					break;
			}
		} else {
			System.out.println("你的输入有误");
		}
    }
}

输出结果为:

图片.png

可以看出在输入的成绩不同时会对应有不同的结果输出。