分支结构和循环结构

本文详细介绍了Java中的分支结构,包括if、if-else、多重if、嵌套if和switch,以及循环结构的while、do-while和for循环。同时,提到了流程控制的关键字break和continue在循环中的作用,并给出了多重循环的示例,如打印矩形和平行四边形的图案。
摘要由CSDN通过智能技术生成

目录

1.分支结构

1.1基本if结构

1.2 if-else结构

1.3多重if

1.4嵌套if

 1.5 swtich结构

1.6 多重if和switch区别 

2.循环结构

2.1 while循环

2.2 do-while循环

2.3 for循环

3.流程控制关键字

3.1 break关键字

3.2 continue关键字

4.多重循环

4.1 打印矩形、平行四边形

4.2 打印三角形


1.分支结构

1.1基本if结构

if(boolean表达式){
    //代码块
}
后续代码...


对布尔表达式进行判断。
结构为true,则执行代码块1,后执行后续代码。
结为false,则跳过代码块1,直接执行后续代码。 

package learn01.test1;

import java.util.Scanner;

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/1 9:40
 *  需求:根据用户输入的成绩判断是否获得奖励
 *
 *  如果
 *
 *  Java成绩大于90 并且 数据库成绩大于85
 *
 *  或者
 *
 *  javaScript成绩等于100 并且 Java成绩大于80
 *
 *  可以获得奖励
 *
 *
 */
public class TestInputScore {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in); // 在Scanner末尾alt + Enter导包

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

        double javaScore = input.nextDouble();

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

        double dbScore = input.nextDouble();

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

        double jsScore = input.nextDouble();


       if( (javaScore > 90 && dbScore > 85) ||  (jsScore == 100 && javaScore > 80)){
           System.out.println("恭喜你,获得奖励");
       }

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

    }
}

1.2 if-else结构

if(boolean表达式){

        //代码块1

}else{

        //代码块2

}

后续代码...

对boolean表达式进行判断。

结果为true,则先执行代码块1,后退出整个结构,执行后续代码。

结果为false,则先执行代码块2,后退出整个结构,执行后续代码。

package learn01.test2;

import java.util.Scanner;

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/1 9:35
 *  需求: 使用if-else结构判断用户输入的年龄是否成年
 *  在使用idea的过程中 : 哪里报错点哪里
 */
public class TestInputAge {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in); // 鼠标移动到Scanner 选择import class 导包

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

        int age = input.nextInt();

        if(age >= 18){
            System.out.println("恭喜你,成年了");
        }else{
            System.out.println("很遗憾,未成年");
        }

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

    }
}

1.3多重if

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,其他均不再执行, 适用于区间判断。

package learn01.test3;

import java.util.Scanner;

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/1 10:42
 *  使用多重if根据比赛名次分配奖励
 *  第一名 获得夏令营三天
 *  第二名 奖励苹果14袋
 *  第三名 奖励笔记本一本
 *  第四名 口头表扬一次
 *
 *  以上需求也属于多种情况 所以可以使用多重if实现
 *  但是注意:以上的条件每种情况属于独立存在的 不属于区间情况 所以对条件的顺序没有要求
 */
public class TestManyIfNumber {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("请输入您的名次");
        int number = input.nextInt();

        if(number == 1){
            System.out.println("夏令营三天");
        }else if(number == 3){
            System.out.println("奖励笔记本一本");
        }else if(number == 4){
            System.out.println("口头表扬一次");
        }else if(number == 2){
            System.out.println("奖励苹果14袋");
        }else{
            System.out.println("只有前4名有奖励");
        }
        System.out.println("程序结束");
    }
}

1.4嵌套if

if(外层表达式){

        if(内层表达式){ ​

                //内层代码块1 ​

        }else{ ​

                //内层代码块2 ​

}else{ ​

        //外层代码块

}

当外层条件满足时,再判断内层条件。

一个选择结构中,可嵌套另一个选择结构。 嵌套格式正确的

情况下,支持任意组合。

package learn01.test4;

import java.util.Scanner;

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/1 11:17
 *  嵌套if  一个完整的if结构中再嵌套另外的if结构
 *
 *  需求: 学校举行百米跑步比赛 如果时间小于13秒则可以进入决赛 然后再根据性别进行男子 女子 分组
 *
 *  改进:
 *      1.如果时间不满足 则不必输入性别了 可以直接淘汰
 *      2.对性别进行准确的判断 如果输入的不是男 或者 女 则进行对应提示
 *
 */
public class TestInnerIf {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的跑步时间");
        double time = input.nextDouble();



        if(time < 13){

            System.out.println("请输入你的性别");
            String sex = input.next();

            // 可以进入决赛
            // 判断字符串 必须使用equals方法 equals属于String类提供的一个专门用于判断的字串的方法
            // 格式 : 字符串变量名称.equals("判断的内容") 如果内容相同 结果为true 内容不同 结果为false
            // 不要使用==比较字符串 后续讲解原因
            if(sex.equals("男")){
                System.out.println("恭喜你,进入男子组决赛");
            }else if(sex.equals("女")){
                System.out.println("恭喜你,进入女子组决赛");
            }else{
                System.out.println("暂不支持第三性别");
            }
        }else{
            System.out.println("被淘汰了");
        }
        System.out.println("程序结束");
    }
}

 1.5 swtich结构

switch(变量|表达式){ ​

        case 值1: ​

                逻辑代码1; ​

        case 值2: ​

                逻辑代码2; ​

        case 值n: ​

                逻辑代码n; ​

        default: ​

                未满足时的逻辑代码;

}

可判断的类型: byte、short、int、char、String(JDK7+)

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

注意:所有case的取值不可相同。

case穿透:这是一种switch的正常现象 前边的case满足以后会继续向下执行

如需每个case都是相互独立 必须在case代码块之后加上break

break关键字:单词含义:打破 折断 用在switch中表示跳出/退出 switch结构

default: 表示没有匹配指定case的其他任何情况 如果需要每个case都相互独立 也要在default

之后加上break 可以提高代码的阅读性

注意:default位置不固定 通常写在最后

package learn01.test5;

import java.util.Scanner;

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/1 14:23
 *   使用switch根据比赛名次分配奖励
 *        第一名 获得夏令营三天
 *        第二名 获得夏令营三天
 *        第三名 奖励笔记本一本
 *        第四名 口头表扬一次
 */
public class TestSwitchNumber {
    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:
                System.out.println("奖励夏令营三天");
                break;
            case 3:
                System.out.println("奖励笔记本一本");
                break;
            case 4:
                System.out.println("奖励口头表扬一次");
                break;
            default:
                System.out.println("继续努力");
                break;
        }
        System.out.println("程序结束");
    }
}

1.6 多重if和switch区别 

多重if适用于某个值处于连续的区间的情况 比如 0~60 60~70 ……

switch适用于某个值属于固定等值的情况 比如 1、2、3、4

如果处理固定等值情况,switch更加简

2.循环结构

2.1 while循环

计数器初始化;

while ( 判断条件 ) { ​

        循环体; ​ 计数器变化;

}

三种循环都有四个必不可少的部分

1.计数器初始化

2.判断条件

3.循环体

4.计数器变化

while循环可以用户处理循环次数确定的情况

while循环也可以实现循环次数不确定的情况

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

package learn01.test6;

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/1 15:33
 *  三种循环都有四个必不可少的部分
 *      1.计数器初始化
 *      2.判断条件
 *      3.循环体
 *      4.计数器变化
 *
 *  while循环
 *  while : 当……
 *  需求:使用while循环打印100次好好学习
 *  while循环可以用户处理循环次数确定的情况
 *
 */
public class TestWhilePrint {
    public static void main(String[] args) {
        int i = 1;
        while(i <= 10000){

            System.out.println("第" + i++ + "次好好学习");
            i++;
        }
        System.out.println(i);
        System.out.println("程序结束");
    }
}

2.2 do-while循环

计数器初始化;

do {

        循环操作;

        计数器变化;

} while ( 循环条件 );

do-while循环用于处理循环次数不确定的情况

do-while也可以处理循环次数确定的情况

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

while和do-while的区别?

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

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

这两种循环都用于处理循环次数不确定的情况

package learn01.test7;

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/1 16:22
 *  使用do-while打印100次好好学习
 *  do-while也可以处理循环次数确定的情况
 *  通常用来处理循环次数不确定的情况 因为循环次数确定的情况 for循环更加简洁
 *
 *  while和do-while的区别?
 *  while循环先判断后执行 条件不成立 一次都不执行
 *  do-while先执行后判断 不管条件是否成立 至少执行一次
 *  这两种循环都用于处理循环次数不确定的情况
 *
 */
public class TestDoWhilePrint {
    public static void main(String[] args) {
        int i = 1;
        do{
            System.out.println("第" + i + "次好好学习");
            i++;
        }while(i <= 100);

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

2.3 for循环

for(int i=0;i<100;i++){ ​

        System.out.println("好好学习!");

}

for循环用于处理循环次数确定的情况

注意for循环的执行顺序

第一轮:

1.先执行计数器初始化 且只执行一次

2.执行判断条件

3.执行循环体

4.执行计数器变化

第二轮:

直接从第二步开始

package learn.test8;

import java.util.Scanner;

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/1 16:33
 *  循环输入某同学结业考试的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("请输入" + name + "同学的第" + i + "门成绩");
            double score = input.nextDouble();
            sum = sum + score; // sum+=score;
        }
        System.out.println(name + "的总分是" + sum + ",平均分是:" + sum / 5);
    }
}

3.流程控制关键字

3.1 break关键字

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

未执行完的循环次数不再执行

break用于循环中,通常要结合分支判断语句一起使用

package learn01.test2;

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/3 9:37
 *  1~10之间的整数相加,得到累加值大于20的当前数
 */
public class TestNumberSum {
    public static void main(String[] args) {
        int sum = 0;
        for(int i =1;i <= 10;i++){
            sum += i;
            if(sum > 20){
                System.out.println(sum + "----" + i);
                break;
            }
        }
        System.out.println(sum);
    }
}

3.2 continue关键字

continue:继续,只能用于循环中 表示跳出本次循环 继续执行下一次循环

continue通常也有要结合判断语句使用

package learn01.test3;

import java.util.Scanner;

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/3 10:25
 *  循环录入Java课的学生成绩,统计分数大于等于80分的学生比例
 *  分析:编写循环实现成绩录入 在录入过程中对成绩判断 如果大于等于80 那么符合条件总数累计加1
 *  否则不进行累计
 *
 *  进行算数运算时:
 *  两个操作数有一个为double,计算结果提升为double。
 *  如果操作数中没有double,有一个为float,计算结果提升为float。
 *  如果操作数中没有float,有一个为long,计算结果提升为long。
 *  如果操作数中没有long,有一个为int,计算结果提升为int。
 *  如果操作数中没有int,均为short或byte或者char,计算结果仍旧提升为int。
 *
 *  特殊:任何类型与String相加(+)时,实为拼接,其结果为String。
 */
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; // 用于统计大于等80分的总人数
        for(int i = 1;i <= count;i++){
            System.out.println("请输入第" + i + "个人的成绩");
            double score = input.nextDouble();
            if(score < 80){ // 这里不是必须使用continue 如果判断大于等于80分再累计也可以实现
                continue;
            }
            sum++;
        }
        System.out.println("大于等于80分的人数占比为:" + sum / count * 100 + "%");
    }

}

4.多重循环

多重循环运行规律:

外层循环变量变化一次 内层循环变量变化一轮

多重循环打印图案规律:

1.外层循环控制行数

2.内层循环控制列数

4.1 打印矩形、平行四边形

public class TestPrintSquare {
    public static void main(String[] args) {
        for(int i  = 1;i <= 5;i++){
            System.out.println("*****");
        }
        System.out.println("-----------------------------------------");

        for(int j = 1;j <= 6;j++){
            for(int i = 1;i <= 8;i++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}



public class TestPrintParallelogram {
    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();
        }
    }
}

4.2 打印三角形

多重循环打印三角形规律:

第一行元素的个数决定了计数器的初始值

如果随着每行元素越来越多 计数器就跟着++ 此时判断条件应该设置一个上限,应该小于或小于等于某个值

如果随着每行元素越来越少 计数器就随之- - 此时的判断条件应该设置一个下限,最后计数器应该大于或大于等于某个值

/**
 * @author CQL
 * @description TODO
 * @date 2023/4/3 15:17
 *  使用多重循环打印正三角形
 */
public class TestPrintTriangle {
    public static void main(String[] args) {
        for(int i = 1;i <=5;i++){
            // 左半部分
            for(int j = 5;j >= i;j--){
                System.out.print(" ");
            }
            // 右半部分  每一行元素的个数为:行号/数 * 2 - 1
            for(int j = 1;j <= 2 * i -1 ;j++){
                System.out.print("*");
            }
            // 换行
            System.out.println();
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值