JavaSE学习笔记_第三章_程序流程

第3章 程序流程

控制流程(也称为流程控制)是计算机运算领域的用语,意指在程序运行时,个别的指令(或是陈述、子程序)运行或求值的顺序。

  • 顺序
  • 条件
  • 循环
  • 转向
  • 异常

1. 条件

1.1 if…else…

1.1.1 if 语句

if 语句是单条件分支语句,即根据一个条件来控制程序执行的流程。

语法格式:

if(条件表达式){
	// 条件满足时执行
}

根据 if 的计算结果(true or false),JVM决定是否执行 if 语句块(即花括号{}包含的所有语句)。

1.1.2 if-else 语句

if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。

语法格式:

if(条件表达式){
    // 条件满足时执行
} else {
    // 条件不满足时执行
}
1.1.3 if-else if-else 语句

if-else if-else 语句是多条件分支语句,即根据多个条件来控制程序执行的流程

语法格式:

if(条件1表达式){
    // 条件1满足时执行
} else if(条件2表达式){
    // 条件2满足时执行
}
	...
  else {
    // 所有条件均不满足时
}
    

1.2 switch(开关语句)

switch 语句是单条件多分支的开关语句。

一般语法格式如下:

switch(条件表达式){
    case value1 :
       //语句
       break; //可选
    case value2 :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

规则:

  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。

  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。

  • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。

  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。

  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不一定要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。

  • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

2. 循环

循环结构:循环条件 + 循环体

2.1 while 循环

先判断循环条件,再执行循环体。

语法格式:

while(条件表达式) {
    // 循环体,条件满足时执行
}

最少执行 0 次循环,也就是不进入循环体中。

2.2 do…while 循环

先执行循环体,再判断循环条件。

语法格式:

do {
       // 循环体
}while(条件表达式);

最少执行 1 次循环。

2.3 for 循环

语法格式:

for(初始化; 条件表达式; 更新) {
    // 循环体
}

说明:

  • 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
  • 然后,检测条件表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  • 执行一次循环后,更新循环控制变量。
  • 再次检测条件表达式。循环执行上面的过程。

2.4 foreach 增强循环

该循环一般用来循环数组和集合。

语法格式:

for(类型 变量 : 数组名/集合名) {
   // 循环体
}

2.5 转向语句

2.5.1 break

立即终止循环。

2.5.2 continue

立即终止当前循环,直接进入下一次循环。

2.5.3 return

跳出循环及所包含的函数体。

2.6 循环应用

1.求累加和:1+2+3+…+100

/**
 * 循环练习:
 * 1.求累加和:1+2+3+...+100
 *
 * @author: SuMo
 */
public class Practice_01_circulation {

    public static void main(String[] args) {
        // while 循环实现
        int i = 1;
        int sum = 0;
        while (i < 101) {
            sum += i;
            i++;
        }
        System.out.println("sum = " + sum);
        System.out.println();

        // do...while 循环实现
        int j = 1;
        sum = 0;
        do {
            sum += j;
            j++;
        } while (j < 101);
        System.out.println("sum = " + sum);
        System.out.println();

        // for 循环实现
        sum = 0;
        for (int k = 0; k < 101; k++){
            sum += k;
        }
        System.out.println("sum = " + sum);
    }

}

2.计数器:统计1~100之间的偶数个数,并将偶数的和加起来(累加)

/**
 * 循环练习:
 * 2.计数器:统计1~100之间的偶数个数,并将偶数的和加起来(累加)
 *
 * @author: SuMo
 */
public class Practice_02_circulation {

    public static void main(String[] args) {
        // for 循环
        int count = 0; // 计数器
        int sum = 0; // 所有偶数的和
        for (int i = 1; i <= 100; i++) {
            if((i % 2) == 0) { // 偶数 % 2 == 0
                count++;
                sum += i;
            }
        }
        System.out.println("1~100之间共有" + count + "个偶数,其所有偶数之和为:" + sum);
        System.out.println();

        // while 循环
        int j = 1;
        count = 0;
        sum = 0;
        while (j <= 100) {
            if ((j % 2 ) == 0) {
                count++;
                sum += j;
            }
            j++;
        }
        System.out.println("1~100之间共有" + count + "个偶数,其所有偶数之和为:" + sum);
        System.out.println();

        // do...while 循环
        int k = 1;
        count = 0;
        sum = 0;
        do {
            if ((k % 2) == 0) {
                count++;
                sum += k;
            }
            k++;
        } while (k <= 100);
        System.out.println("1~100之间共有" + count + "个偶数,其所有偶数之和为:" + sum);
    }

}

3.循环录入一名同学的5个科目的平时成绩,并计算总分和平均分

/**
 * 循环案例:
 * 1.循环录入一名同学的5个科目的平时成绩,并计算总分和平均分
 *
 * @author: SuMo
 */
public class Practice_03_circulation {

    public static void main(String[] args) {
        // 录入成绩
        int score = 0; // 记录从键盘输入的成绩
        int sum = 0; // 总成绩
        int avg = 0; // 平均分
        for (int i = 0; i < 5; i++) {
            System.out.println("请输入第" + (i + 1) + "门成绩:");
            Scanner input = new Scanner(System.in);
            score = input.nextInt();
            sum += score;
        }
        avg = sum / 5;
        System.out.println("该同学的总分:" + sum + ", 平均分:" + avg);
    }

}

4.任意输入一个值,输出该值的加法组成

  • 例如:6 0+6=6;1+5=6;2+4=6;…;6+0=6
/**
 * 循环案例:
 * 2.任意输入一个值,输出该值的加法组成
 *  例如:6 0+6=6;1+5=6;2+4=6;...;6+0=6
 * 
 * @author: SuMo
 */
public class Practice_04_circulation {

    public static void main(String[] args) {
        // 录入数字
        System.out.println("请输入一个数值:");
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();
        System.out.println("该数值:" + num + "的加法组成为:");
        for (int i = 0, j = num; i <= num; i++, j--) {
            System.out.println(i + "+" + j + "=" + (i + j));
        }
    }

}

认真、沉着做事,每天进步一小点!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值