JavaSE Day04---流程控制

本文介绍了编程中的三种基本流程控制结构:顺序流程、分支流程和循环流程。顺序流程是自上而下的执行方式;分支流程包括if和switch,用于根据条件执行不同的代码路径;循环流程涉及while、do-while和for,用于重复执行某段代码。文章通过示例详细讲解了if单分支、双分支和多分支以及switch语句的用法,并提供了for循环的实例。
摘要由CSDN通过智能技术生成

流程控制分类

程序执行过程中的执行路径称之为流程控制。
所有编程语言中都对于程序的执行路径做了统一的规划,统一分为三个部分:
顺序流程、分支流程、循环流程。
  • 顺序流程

自上而下执行。 所有的程序都是顺序流程的。

main方法中的代码都是自上而下 逐行执行。它也是程序的主干流程。

  • 分支流程

程序在执行的过程中,开辟多条其他的执行路径。

if 、 switch

  • 循环流程

程序在执行的过程中,可能针对于某些代码要重复 往复执行。

while 、do-while、 for

if分支结构

if单分支
// 测试if单分支结构
public class IfTest01{

    public static void main(String[] args) {
        
        //1: 需求-> 声明一个用户名 一个密码 仿照登录
        //1: 声明两个变量存储 注册的数据信息
        int regUname = 123;
        int regPwd = 123;


        //2: 模拟登录
        int loginUname = 123;
        int loginPwd = 123456;

        //3: 声明一个变量存储是否登录成功
        boolean flag = regUname==loginUname && regPwd==loginPwd;

        //4:判定
        if(flag){
            System.out.println("恭喜你 登录成功");
        }
        System.out.println("测试结束");
    }

}
语法结构
if(expression){ // 表达式 表达式的结果是一个boolean值
    statement;
    。。。。。
}
执行顺序
  • 判定表达式的值

  • 如果表达式的值是true 执行对应的执行语句 如果后续存在代码继续向下执行

  • 如果表达式的值是false 跳过当前的单分支 ,如果后续存在代码继续向下执行

注意事项
  • if中是可以编写赋值语句的,if单分支的分支结构比较单一,用途是最广泛的。

flag = true;
if(flag=false){ // ==不能写赋值  D  D D  C C 
    System.out.println("我进来了。。。");
}
System.out.println("我结束了。。");
if双分支
// 测试if双分支结构
// 产生一个随机数N[0,10086]  用户输入一个数字M 判定当前用户输入的数字和产生的数字关系  打印输出大了 小了
public class IfTest02{

    public static void main(String[] args) {
    

        // 产生一个随机数[12,77] 判定该数字的奇偶性
        int random = (int)(Math.random()*(77-12+1)+12);

        System.out.println("产生的随机数是:"+random);

        // 判定
        boolean flag = random%2==0;
        
        if (flag) {
            System.out.println("这是一个偶数");
        }else{
            System.out.println("这是一个奇数");
        }

        System.out.println("执行结束。。。。。");


    }

}
语法结构
if(expression){ // boolean值    
    statement1;    
    ......}else{    
              statement2;    
              ......}
执行顺序
  • 判定表达式的值

  • 如果表达式的值是true 执行对应的if中的执行语句 如果后续存在代码继续向下执行

  • 如果表达式的值是false 执行else中对应的执行语句 ,如果后续存在代码继续向下执行

注意事项
  • 条件互斥。

if多分支
import java.util.Scanner;
// 测试if多分支结构
// 产生一个随机数N[23,36]  用户输入一个数字M 判定当前用户输入的数字和产生的数字关系  打印输出大了 小了 等于
public class IfTest03{
    public static void main(String[] args) {
        // 产生一个随机数[23,36] 判定该数字的奇偶性
        int random = (int)(Math.random()*(36-23+1)+23);
        System.out.println("产生的随机数是:"+random);
        // 获取用户输入的值
        Scanner input = new Scanner(System.in); // int a = 10;
        int inputNum = input.nextInt(); // 阻塞方法 
        System.out.println("您输入的数字是>>>>>>"+inputNum);

        if (random==inputNum) {
            System.out.println("恭喜您 猜对了 你真的是天选之子!!!");
        }else if(random>inputNum){
            System.out.println("不好意思 你的格局小了。。。。");
        }else if(random<inputNum){
            System.out.println("不好意思 你的格局大了。。。。");
        }/*else{
            System.out.println("不好意思 输入有误。。。");
        }*/
        System.out.println("GAME OVER");
    }

}
语法结构
if(expression1){ // boolean值
     statement1;
     ......
}else if(expression2){
    statement2;
    ......
}........{
    ..........
}[else{

}]
  • 执行顺序
  • 判定表达式1的值 ,如果表达式1的值是true,则执行对应的执行语句1 结束整个多分支 执行后续代码

  • 如果表达式1的值是false,则判定表达式2的值,如果表达式2为true,则执行对应的执行语句2,结束整个多分支 。。。。。。。

  • 如果所有的表达式都是false,并且整个多分支还包含else,则执行else对应的执行语句, 结束整个多分支 执行后续代码

注意事项
  • 分支不要太多。修剪分支的方式(算法规避、大话设计模式)

switch分支结构


public class SwitchTest01{

    public static void main(String[] args) {
        

        // 随机产生一个1-12的数字 代表月份 输出当前月份所属的季节

        int month = (int)(Math.random()*16+1);
        System.out.println("当前所属的月份是:"+month);

        // String month = "12月";
        // 使用switch进行判定
        switch(month){
            case 2:
                /*System.out.println("春天在哪里呀,春天在哪里");break;*/
            case 3:
                /*System.out.println("春天在哪里呀,春天在哪里");break;*/
            case 4:
                System.out.println("春天在哪里呀,春天在哪里");break;
            case 5:
                /*System.out.println("夏天夏天 悄悄过去,留下小秘密");break;*/
            case 6:
                /*System.out.println("夏天夏天 悄悄过去,留下小秘密");break;*/
            case 7:
                System.out.println("夏天夏天 悄悄过去,留下小秘密");break;
            case 8:
                /*System.out.println("就让秋风带走我的思念 带走我的泪");break;*/
            case 9:
                /*System.out.println("就让秋风带走我的思念 带走我的泪");break;*/
            case 10:
                System.out.println("就让秋风带走我的思念 带走我的泪");break;
            case 11:
                /*System.out.println("你就像那冬天里的一把火 熊熊火焰燃烧了我。。。");break; */
            case 12:
                /*System.out.println("你就像那冬天里的一把火 熊熊火焰燃烧了我。。。"); break;*/
            case 1:
                System.out.println("你就像那冬天里的一把火 熊熊火焰燃烧了我。。。");break;
            default:
                System.out.println("不好意思 输入有误"); break;

        }
        System.out.println("执行结束。。。。");

    }

}
语法结构
switch(expression){ // 获取到一个值
    case value1:
        statement1;
    case value2:
        statement2;
    case  valueN:
        statementN;
    。。。。。。。
}
执行顺序
  • 计算表达式的值 ,然后依次匹配对应的case,如果【匹配上了执行对应的执行语句;结束整个switch

  • 如果没有匹配上,继续判定后续的case

  • 直到所有都没有匹配,执行default内容

注意事项
  • break 防止穿透

  • 表达式的值一定是基本数据(byte、short、int、char),JDK1.5之后支持放枚举(enum) JDK1.7之后支持放String。

for循环结构

public class Class002_Practice {
    public static void main(String[] args) {
        //求1-100的和,求1-100的偶数和,求1-100的奇数和
        //重复求和  [1,100]
        int sum = 0; //整数和
        int sum1 = 0; //奇数和
        int sum2 = 0; //偶数和
        for(int i=1;i<=100;i++){
            sum+=i;  //所有整数和

            if(i%2!=0){
                sum1+=i;
            }else{
                sum2+=i;
            }
        }
        System.out.println(sum);
        System.out.println(sum1);
        System.out.println(sum2);

        //偶数
        sum2=0;
        for(int i=0;i<=100;i+=2){
            sum2+=i;
        }
        System.out.println(sum2);

        //1-50当中能被4整除的数的和
        sum=0;
        for(int i=1;i<=50;i++){
            if(i%4==0){
                sum+=i;
            }
        }
        System.out.println(sum);

        //求出 1-100当中既能被3整除又能被5整除还能被2整除的和,
        sum=0;
        for(int i=1;i<=100;i++){
            if(i%2==0 && i%3==0 && i%5==0){
                sum+=i;
            }
        }
        System.out.println(sum);


        //求出 1-100当中能被3整除或者能被5整除或者能被2整除的和
        sum=0;
        for(int i=1;i<=100;i++){
            if(i%2==0 || i%3==0 || i%5==0){
                sum+=i;
            }
        }
        System.out.println(sum);

        //求5的阶乘  5! 5*4*3*2*1
        int result = 1;
        for(int i=5;i>=1;i--){
            result*=i;
        }
        System.out.println(result);

        //请找出[100,300]之间能被5整除的所有数,每行输出8个数
        sum=0;
        int count=0;
        for(int i=100;i<=300;i++){
            if(i%5==0){
                count++;
                System.out.print(count<8?i+",":i);
            }
            if(count%8==0){
                System.out.println("");
                count=0;
            }
        }
        /*
            请找出[100,300]之间能被5整除的所有数,每行输出8个数,每两个数之间用逗号隔开
            例如 :
                100,105,110,115,120,125,130,135
                ....
        */

    }
}
语法结构
for(条件初始化;条件判断;条件变化){
                重复执行的代码段;
            }
执行顺序
  • 执行条件初始化

  • 条件判断 : 值为boolean类型的表达式

值为false : 循环结构结束

值为true : 继续执行本次循环体语句{}

  • 条件变化 i++ i+=10; i*=3; 重复执行第2,3步骤

注意事项
  • 在重复执行多次代码的时候,如果能够确定循环次数|确定变量变化的区间与规律--->for

  • 如果循环体语句只有一句,前后的{}可以省略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值