Skip to content

流程控制

if结构

基本if结构

java
if(布尔表达式){
	//代码块1
}

执行流程:
对布尔表达式进行判断。
结果为true,则先执行代码块1,再执行后续代码。
结果为false,则跳过代码块1,直接执行后续代码。
java
package com.atguigu.test4;


import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/7/29 15:17
 *  需求:提示用户输入年龄 根据年龄判断 用户是否成年
 */
public class TestIfInputAge {
    public static void main(String[] args) {
        // 将光标移动到Scanner单词结尾 alt + 回车 导包(注意不要选错)
        Scanner input = new Scanner(System.in);

        System.out.println("请输入您的年龄");

        int age = input.nextInt();

        if(age >= 18){
            System.out.println("恭喜你,成年了");
        }
        System.out.println("程序结束");
    }
}

if else结构

java
if(布尔表达式){
	//代码块1
}else{
	//代码块2
}

对布尔表达式进行判断。
结果为true,则先执行代码块1,再退出整个结构,执行后续代码。
结果为false,则先执行代码块2,再退出整个结构,执行后续代码。

示例

ts
使用if-else结构  根据用户输入的分数判断是否可以获得奖励
java
import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/7/29 15:21
 *  需求:使用if-else结构  根据用户输入的分数判断是否可以获得奖励
 *
 *
 *  如果
 *  java成绩大于90分 并且 数据库成绩大于80分
 *  或者
 *  css成绩大于85 并且 js成绩等于100分
 *  获得奖励苹果14袋
 */
public class TestIfElseInputScore {
    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);

        System.out.println("请输入java成绩");

        double javaScore = input.nextDouble(); // 这里可以接收int类型的整数 将实现自动类型提升

        System.out.println("请输入数据库成绩");

        double dbScore = input.nextDouble();

        System.out.println("请输入css成绩");

        double cssScore = input.nextDouble();

        System.out.println("请输入js成绩");

        double jsScore = input.nextDouble();

        if((javaScore > 90 && dbScore > 80) ||   (cssScore > 85 && jsScore == 100)){
            System.out.println("奖励苹果14袋");
        }else{
            System.out.println("继续加油~");
        }

        System.out.println("程序结束");
    }
}

对条件的顺序

但是推荐写为升序的 因为阅读性更高

多重if结构

java
if(布尔表达式1){
	//代码块1
}else if(布尔表达式2){
	//代码块2
}else if(布尔表达式3){
	//代码块3
}else{
	//代码块4
}

执行流程:
表达式1为true,则执行代码块1,再退出整个结构。
表达式2为true,则执行代码块2,再退出整个结构。
表达式3为true,则执行代码块3,再退出整个结构。
以上均为false,则执行代码块4,再退出整个结构。

注意:相互排斥,有一个为true,其他均不再执行,
适用于区间判断

示例1

ts
使用多重if实现根据分数进行等级判断
分数大于90分 优秀
分数大于80分 良好
分数大于70分 中等
分数大于59分 及格
小于60分 不及格

分析:以上需求对分数做判断 属于连续的区间的操作 判断条件必须是升序的 或者 降序
不能为乱序的
java
import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/7/29 15:48
 *  使用多重if实现根据分数进行等级判断
 *  分数大于90分 优秀
 *  分数大于80分 良好
 *  分数大于70分 中等
 *  分数大于59分 及格
 *  小于60分 不及格
 *
 *
 *  分析:以上需求对分数做判断 属于连续的区间的操作 判断条件必须是升序的 或者 降序
 *  不能为乱序的
 *
 */
public class TestManyIfInputScore {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入您的分数");
        double score = input.nextDouble();
        if(score > 80 ){
            System.out.println("良好");
        }else if(score > 90){
            System.out.println("优秀");
        }else if(score > 59){
            System.out.println("及格");
        }else if(score > 70){
            System.out.println("中等");
        }else {
            System.out.println("不及格");
        }
        System.out.println("程序结束");
    }
}

示例2

java
import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/7/29 15:41
 *  多重if
 *  需求:根据名次进行奖励
 *  第一名 奖励夏令营一个月
 *  第二名 奖励苹果14袋
 *  第三名 奖励笔记本一本
 *  第四名 口头表扬一次
 *
 *  分析:以上需求有多个条件 使用基本if结构 或者 if-else结构均不能实现
 *  必须使用多重if结构实现
 *  多重if中的else if 是没有个数限制的 根据需求书写
 *  多重if中的else 是可选的 根据需求是否书写 如果书写了else 表示多选1
 *  如果没有书写 可能为多选0 或者 多选1
 *
 *  这个类中的需求 不涉及到区间判断 所以对条件的顺序 没有要求
 *  但是推荐写为升序的 因为阅读性更高
 *
 *
 */
public class TestManyIf {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入您的名次");
        int number = input.nextInt();
        if(number == 2){
            System.out.println("奖励苹果14袋");
        }else if(number == 1){
            System.out.println("奖励夏令营一个月");
        }else if(number == 4){
            System.out.println("口头表扬一次");
        }else if(number == 3){
            System.out.println("奖励笔记本一本");
        }else{
            System.out.println("继续努力");
        }
        System.out.println("程序结束");
    }
}

嵌套if结构

嵌套if : 一个完整的if结构中 嵌套另外一个if结构 支持任意组合

格式正确的情况 支持任意组合 通常不会超过三层

示例

ts
学校举行百米跑步比赛 根据跑步时间决定是否可以进入决赛 跑步时间小于14秒

然后再根据性别分别分组 男子组 或者 女子组
java
import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/7/29 16:18
 *  嵌套if : 一个完整的if结构中 嵌套另外一个if结构  支持任意组合
 *  格式正确的情况 支持任意 通常不会超过三层
 *
 *  需求:学校举行百米跑步比赛 根据跑步时间决定是否可以进入决赛 跑步时间小于14秒
 *  然后再根据性别分别分组 男子组 或者 女子组
 *
 */
public class TestInnerIf {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的跑步时间");
        double time = input.nextDouble();
        if(time < 14){
            System.out.println("请输入你的性别");
            String sex = input.next();
            // 表示开始分组 进行性别判断
            // 对字符串进行判断 必须使用equals方法
            // 用法: 变量名.equals("比较的内容")
            if(sex.equals("男")){
                System.out.println("恭喜进入男子组");
            }else if(sex.equals("女")){
                System.out.println("恭喜进入女子组");
            }else{
                System.out.println("性别不合适");
            }
        }else{
            System.out.println("很遗憾,没有进入决赛");
        }
        System.out.println("程序结束");
    }
}

switch结构

ts
switch(变量|表达式){
	case 值1:
		逻辑代码1;
	case 值2:
		逻辑代码2;
	case 值n:
		逻辑代码n;
	default:
		未满足时的逻辑代码;
}

如果变量中的值等于值1,则执行逻辑代码1。
如果变量中的值等于值2,则执行逻辑代码2。
如果变量中的值等于值n,则执行逻辑代码n。
如果变量中的值没有匹配的case值时,执行default中的逻辑代码。

所有case的取值不可相同。

break : 单词意思-打破 折断
用于在switch中 表示跳出switch结构
default 关键字在switch中是可选的 根据需求是否书写
如果需要每种情况都是相互独立的 那么需要在每个case之后加上break
因为default位置不固定 所以也要求default之后加上break(前提是每个情况都独立)
加上break还可以提高代码的阅读性

支持数据结构

ts
byte、short、int、char、String(JDK7+)枚举

示例1

ts
需求:根据名次进行奖励
第一名 奖励夏令营一个月
第二名 奖励苹果14袋
第三名 奖励笔记本一本
第四名 口头表扬一次
java
import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 9:14
 *  switch 结构
 *  支持的数据类型“byte short int char String(JDK7+) 枚举
 *  switch用来判断某个值属于固定等值的情况
 *
 *  需求:根据名次进行奖励
 *    第一名 奖励夏令营一个月
 *    第二名 奖励苹果14袋
 *    第三名 奖励笔记本一本
 *    第四名 口头表扬一次
 *
 *
 *  break : 单词意思-打破 折断
 *  用于在switch中 表示跳出switch结构
 *
 *  default 关键字在switch中是可选的 根据需求是否书写
 *  如果需要每种情况都是相互独立的 那么需要在每个case之后加上break
 *  因为default位置不固定 所以也要求default之后加上break(前提是每个情况都独立)
 *  加上break还可以提高代码的阅读性
 */
public class TestSwitch1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的名次");
        int number = input.nextInt();
        switch(number){
            case 2:
                System.out.println("奖励苹果14袋");
                break;
            case 1:
                System.out.println("奖励夏令营一个月");
                break;
            case 4:
                System.out.println("口头表扬一次");
                break;
            case 3:
                System.out.println("奖励笔记本一本");
                break;
            default:
                System.out.println("继续加油");
                break;
        }
        System.out.println("程序结束");
    }
}

示例2

ts
根据名次进行奖励
第一名 奖励夏令营一个月
第二名 奖励夏令营一个月
第三名 奖励夏令营一个月
第四名 口头表扬一次
我们可以根据需求合理的利用switch结构case穿透的特点来实现我们的需求
java
import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 9:14
 *  switch 结构
 *  支持的数据类型“byte short int char String(JDK7+) 枚举
 *  switch用来判断某个值属于固定等值的情况
 *
 *  需求:根据名次进行奖励
 *    第一名 奖励夏令营一个月
 *    第二名 奖励夏令营一个月
 *    第三名 奖励夏令营一个月
 *    第四名 口头表扬一次
 *
 *
 * 多重if  和 switch 都可以处理 连续区间 或者是固定等值的情况
 * 但是 多重if处理连续区间更合适
 * switch处理固定等值更合适
 *
 */
public class TestSwitch2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的名次");
        int number = input.nextInt();
        switch(number){
            case 1:
            case 2:
            case 3:
                System.out.println("奖励夏令营一个月");
                break;
            case 4:
                System.out.println("口头表扬一次");
                break;
            default:
                System.out.println("继续加油");
                break;
        }
        System.out.println("程序结束");
    }
}

示例3

java

import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 9:14
 *  switch 结构
 *  支持的数据类型 byte short int char String(JDK7+) 枚举
 *  switch用来判断某个值属于固定等值的情况
 */
public class TestSwitch3 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        byte b1 = 1;
        short s1 = 2;
        int i1 = 3;
        char ch1 = '中'; // 注意char类型有三种赋值方式 所以case之后的值 也有三种写法
        String str = "5";
        switch(str){
            case "5":
                System.out.println("变量值为1");
                break;
            case "b":
                System.out.println("变量值为2");
                break;
            case "d":
                System.out.println("变量值为3");
                break;
            case "c":
                System.out.println("变量值为4");
                break;
            default:
                System.out.println("变量值不为1234");
                break;
        }
        System.out.println("程序结束");
    }
}

多重if和switch

多重if 和 switch 都可以处理 连续区间 或者是固定等值的情况

但是 多重if处理连续区间更合适

switch处理固定等值更合适

while循环

java
计数器初始化;

while (循环条件) {
    循环操作;
    计数器变化;
}

循环必要部分

ts
任何循环都有四个必不可少的部分:

1.计数器初始化
2.循环条件
3.循环体
4.计数器变化

使用场景

ts
while循环可以用于处理循环次数确定 以及 循环次数不确定的情况

通常用来处理循环次数不确定的情况 因为循环次数确定的情况使用for循环更为简洁

循环特点

ts
while循环特点:先判断 后执行 如果条件不成立 则一次都不执行

示例1

java

/**
 *  while循环
 *  while单词:当……
 *  任何循环都有四个必不可少的部分:
 *      1.计数器初始化
 *      2.循环条件
 *      3.循环体
 *      4.计数器变化
 *
 *  使用while循环实现打印100遍好好学习
 */
public class TestWhile {
    public static void main(String[] args) {
        int i = 1; // 计数器初始化
        while(i <= 0){ // 判断条件
            System.out.println("第" + i + "次好好学习,天天向上"); // 循环体
            ++i; // 计数器变化
        }
        System.out.println("程序结束");
    }
}

示例2

ts
老师每天检查赵四的学习任务是否合格,如果不合格,则继续进行
java
import java.util.Scanner;

/**
 *  需求:老师每天检查赵四的学习任务是否合格,如果不合格,则继续进行。
 *  老师给赵四安排的每天的学习任务为:
 *  上午阅读教材,学习理论部分,下午上机编程,掌握代码部分。
 *
 *  结合while循环两个案例总结:while循环可以用于处理循环次数确定 以及 循环次数不确定的情况
 *  通常用来处理循环次数不确定的情况 因为循环次数确定的情况使用for循环更为简洁
 *
 *  while循环特点:先判断 后执行 如果条件不成立 则一次都不执行
 */
public class TestCheckStudy {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的学习任务是否合格?y/n");
        String answer = input.next(); // 相当于计数器初始化
        while(answer.equals("n")){ // 判断条件
            // 循环体
            System.out.println("上午阅读教材,学习理论知识");
            System.out.println("下午敲代码,掌握代码知识");
            System.out.println("请输入你的学习任务是否合格?y/n");
            // 计数器变化
            answer = input.next();
        }
//        if(answer.equals("n")){
//            System.out.println("上午阅读教材,学习理论知识");
//            System.out.println("下午敲代码,掌握代码知识");
//        }else{
//            System.out.println("恭喜你,完成任务");
//        }
        System.out.println("恭喜你,完成任务");
        System.out.println("程序结束");
    }
}

do-while循环

java
计数器初始化;
do {
    循环操作;
    计数器变化;
}while ( 循环条件 );

使用场景

ts
do-while循环可以用于实现循环次数确定 以及 循环次数不确定的情况

通常用于处理循环次数不确定的情况 因为循环次数确定 for循环更为简洁

示例1

java
import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 11:12
 *  do-while:单词 做……当……
 * do-while : 先执行 后判断 不管条件是否成立 至少执行一次
 *
 * 经过几天的学习,老师给赵四一道测试题,让他先上机编写程序完成,
 * 然后老师再检查是否合格。如果不合格,则继续编写……
 */
public class TestCheckStudy {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String answer;
        do{
            System.out.println("上机编写测试题……");

            System.out.println("请输入成绩是否合格?y/n");

            answer = input.next();

        }while(answer.equals("n"));
//        if(answer.equals("n")){
//            System.out.println("不合格,继续上机编写测试题");
//        }else{
//            System.out.println("恭喜你,完成任务");
//        }
        System.out.println("恭喜你,完成任务");
        System.out.println("程序结束");
    }
}

示例2

ts
使用do-while循环实现打印100次好好学习
java

/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 11:19
 *  使用do-while循环实现打印100次好好学习
 *
 *  do-while循环可以用于实现循环次数确定 以及 循环次数不确定的情况
 *  通常用于处理循环次数不确定的情况 因为循环次数确定 for循环更为简洁
 *
 *  while循环和do-while循环的区别?
 *  while循环是先判断后执行 条件不成立一次都不执行
 *  do-while先执行后判断 不管条件是否成立 至少执行一次
 *
 *
 */
public class TestDoWhile {
    public static void main(String[] args) {
        int i = 1;
        do{
            System.out.println("第" + i + "次好好学习");
            i++;
        }while(i <= 100);
        System.out.println("程序结束 " );
    }
}

do-while和while的区别

ts
while循环和do-while循环的区别?

while循环是先判断后执行 条件不成立一次都不执行

do-while先执行后判断 不管条件是否成立 至少执行一次

for循环

java
for(计数器初始化;循环条件;计数器变化){ 
     循环体;
}
ts
循环次数确定的情况 使用for循环 更加简洁

注意for循环的执行顺序:
第一轮:
1.执行计数器初始化 并且只执行一次
2.判断条件
3.执行循环体
4.执行计数器变化
后续轮:
直接从第2步开始执行

示例1

ts
使用for循环打印100次好好学习
java
package com.atguigu.test4;

/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 11:29
 *  for循环 : for 为了……
 *  循环次数确定的情况 使用for循环 更加简洁
 *  注意for循环的执行顺序:
 *  第一轮:
 *      1.执行计数器初始化 并且只执行一次
 *      2.判断条件
 *      3.执行循环体
 *      4.执行计数器变化
 *  后续轮:
 *      直接从第2步开始执行
 *
 *  需求:使用for循环打印100次好好学习
 */
public class TestForPrint {
    public static void main(String[] args) {
        for(int i = 1;i <= 10000;i++){
            System.out.println("第" + i + "次好好学习");
        }
        System.out.println("程序结束");
    }
}

示例2

ts
使用for循环录入某同学的5门成绩  计算平均分
java
package com.atguigu.test4;
import java.util.Scanner;
/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 11:33
 *  使用for循环录入某同学的5门成绩  计算平均分
 */
public class TestInputScore {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入名字:");
        String name = input.next();
        double sum = 0; // 用于累计所有的成绩
        for(int i = 1;i <= 5;i++){
            System.out.println("请输入第" + i + "门成绩");
            double score = input.nextDouble();
            sum = sum +  score; //sum += score;
        }
        System.out.println(name + "同学的平均分为:" + sum / 5);
        System.out.println("程序结束");
    }
}

示例3

ts
根据用户输入的数字打印加法表

在循环中,如何实现递减的效果:使用一个固定的数减去一个递增的值
在循环中,如何实现递增的效果:使用一个固定的数减去一个递减的值
java
package com.atguigu.test4;
import java.util.Scanner;
/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 11:37
 *  根据用户输入的数字打印加法表
 *
 *  如何实现递减的效果:
 *  使用一个固定的数减去一个递增的值
 *
 */
public class TestAddition {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个数字");
        int number = input.nextInt();
        for(int i = 0;i <= number;i++){
            System.out.println(i + "+" + (number - i) + "=" + number);
        }
    }
}

三种循环对比

ts
执行顺序 

while 循环:先判断,再执行

do-while循环:先执行,再判断

for循环:先判断,再执行

适用情况
	循环次数确定的情况,通常选用for循环
	循环次数不确定的情况,通常选用while或do-while循环

break关键字

break关键字:可以用于switch或者循环结构中 分别表示跳出switch结构 或者 中断(跳出)循环

未执行完的循环次数 不再执行 在循环结构中通常(99%)要结合分支语句来使用

示例1

ts
使用for循环模拟跑步10圈 当跑完第8圈 退出
java
package com.atguigu.test6;
/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 14:11
 *  break关键字:可以用于switch或者循环结构中 分别表示跳出switch结构 或者 中断(跳出)循环
 *  未执行完的循环次数 不再执行 在循环结构中通常(99%)要结合分支语句来使用
 *
 *  使用for循环模拟跑步10圈 当跑完第8圈 退出
 */
public class TestBreak {
    public static void main(String[] args) {
        for(int i = 1;i <= 10;i++){
            System.out.println("跑步第" + i + "圈");
            if(i == 8){
                System.out.println("退出比赛");
                break;
            }
        }
        System.out.println("------------------------------------------------");
        int i = 1;
        while(i <= 10){
            System.out.println("跑步第" + i + "圈");
            if(i == 5){
                break;
            }
            i++;
        }
        System.out.println("------------------------------------------------");
        i = 1;
        do{
            System.out.println("跑步第" + i + "圈");
            if(i == 5){
                break;
            }
            i++;
        }while(i <= 10);
        System.out.println("程序结束");
    }
}

示例2

ts
循环录入某学生5门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示录入错误
java
package com.atguigu.test6;
import java.util.Scanner;

/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 14:19
 * 循环录入某学生5门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示录入错误
 */
public class TestInputScore {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double sum = 0;
        boolean flag = true; // 定义布尔类型变量 初始值为true
        for(int i = 1;i <= 5;i++){
            System.out.println("请输入第" + i + "门成绩");
            double score = input.nextDouble();
            if(score < 0){
                flag = false;
                System.out.println("分数录入有误,停止录入");
                break;
            }
            sum += score;
        }
        if(flag){
            System.out.println("平均分为:" + sum / 5);
        }else{
            System.out.println("分数录入有误,不再计算平均分");
        }
    }
}

示例3

ts
1~10之间的整数相加,得到累加值大于20的当前数
java
package com.atguigu.test6;
/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 14:27
 *  1~10之间的整数相加,得到累加值大于20的当前数
 */
public class TestAddition {
    public static void main(String[] args) {
        int sum = 0;
        for(int i = 1;i <= 10;i++){
            sum += i;
            if(sum > 20){
                break;
            }
        }
        System.out.println("sum = " + sum);
    }
}

continue关键字

continue:单词 继续 只能用在循环中 表示跳过本次循环 继续执行下一次循环

java
package com.atguigu.test7;
/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 15:10
 *  continue:单词 继续  只能用在循环中 表示跳过本次循环 继续执行下一次循环
 */
public class TestContinue {
    public static void main(String[] args) {
        for(int i  =1;i <= 10;i++){
            if(i == 5){
                break;
            }
            System.out.println("i = " + i);
        }
        System.out.println("----------------------------------");
        for(int i  =1;i <= 10;i++){
            if(i == 5){
                continue;
            }
            System.out.println("i = " + i);
        }
    }
}

示例2

ts
循环录入Java课的学生成绩,统计分数大于等于80分的学生比例
java
package com.atguigu.test7;
import java.util.Scanner;
/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 15:13
 *  循环录入Java课的学生成绩,统计分数大于等于80分的学生比例
 */
public class TestInputScore {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入人数");
        int count = input.nextInt();
        double sum = 0; // 定义sum变量 用于统计大于80分的人数
        for(int i = 1;i <= count;i++){
            System.out.println("请输入第" + i + "个人的成绩");
            double score = input.nextDouble();
            if(score <= 80){
                continue;
            }
            sum++;
        }
        System.out.println("大于80分的人数占比为:" + sum / count * 100 + "%" );
    }
}

示例3

ts
求1~10之间的所有偶数和
java
package com.atguigu.test7;
/**
 * @author WHD
 * @description TODO
 * @date 2023/7/30 15:20
 *  求1~10之间的所有偶数和
 */
public class TestAddition {
    public static void main(String[] args) {
        /**方式1**/
        int sum = 0;
        for(int i = 1;i <= 10;i++){
            if(i % 2 == 1){
                continue;
            }
            sum += i;
        }
        System.out.println("sum = " + sum);
        /**方式2**/
        sum = 0;
        for(int i = 0;i <= 10;i+=2){
            sum +=i;
        }
        System.out.println("sum = " + sum);
        /**方式3**/
        sum = 0;
        for(int i = 1;i <= 10;i++){
            if(i % 2 == 0){
                sum += i;
            }
        }
        System.out.println("sum = " + sum);
    }
}

break和continue对比

使用场合:

​ break用于switch结构和循环结构中

​ continue用于循环结构中

作用(循环结构中)

​ break语句终止某个循环,程序跳转到循环块外的下一条语句

​ continue跳出本次循环,进入下一次循环

​ 双重循环亦如此

debug调试

debug调试图例

image-20241223112032128

多重循环

ts
关于多重循环执行过程:外层循环变量变化一次,内层循环变量变化一轮

打印图案

ts
关于多重循环打印图案的规律:

外层循环控制行数
内层循环控制列数

打印三角形规律:
第一行元素的个数决定计数器的初始值
如果元素个数越来越多 那么计数器就++  此时必须设置一个上限 也就是判断条件必须为小于或者小于等于某个值
如果元素个数越来越少 那么计数器就--  此时必须设置一个下限 也就是判断条件必须为大于或者大于等于某个值

示例

ts
分别使用单层循环 以及 双重循环 打印矩形
java
package com.atguigu.test8;
/**
 *  分别使用单层循环 以及 双重循环 打印矩形
 *
 *  关于多重循环执行过程:外层循环变量变化一次  内层循环变量 变化一轮
 *  关于多重循环打印图案的规律:
 *  外层循环控制行数
 *  内层循环控制列数
 *
 */
public class PrintRectangle {
    public static void main(String[] args) {
        for(int i =1;i <= 5;i++){
            System.out.println("*****");
        }
        System.out.println("--------------------------------------------------------");
        for(int j = 1;j <= 8;j++){
            for(int i = 1;i <= 4;i++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

示例2

ts
打印平行四边形
java
package com.atguigu.test8;

/*
 *  打印平行四边形
 *
 *  打印三角形规律:
 *  第一行元素的个数决定计数器的初始值
 *  如果元素个数越来越多 那么计数器就++  此时必须设置一个上限 也就是判断条件必须为小于或者小于等于某个值
 *  如果元素个数越来越少 那么计数器就--  此时必须设置一个下限 也就是判断条件必须为大于或者大于等于某个值
 *
 *  关于多重循环打印图案的规律:
 *    外层循环控制行数
 *   内层循环控制列数
 *
 */
public class PrintParallelogram {
    public static void main(String[] args) {
        for(int i=1;i <=5;i++){ // 外层循环 控制行数
            // 左半部分
            for(int j = 5; j >= i;j--){
                System.out.print("$");
            }
            // 右半部分
            for(int j = 1;j <= 5;j++){
                System.out.print("*");
            }
            // 换行
            System.out.println();
        }
    }
}