流程控制-struct

循序结构

  • Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。
  • 顺序结构是最简单的算法结构。
  • 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。

选择结构

  1. if但选择结构

      if(布尔表达式){
    
    			//如果布尔表达式的值为true执行代码
    
    }  
    
  2. if双选择结构

    if(布尔表达式){
    
    			//如果布尔表达式的值为true执行的代码}
    
    else{
    
    			//如果布尔表达式的值为false的代码
    
    }
    
  3. if多选择结构

     if(布尔表达式1){
    
    			//如果布尔表达式1的值为true执行的代码
    
    }else if(布尔表达式2){
    
    			//布尔表达式2的值为true执行的代码
    
    }else{
    
    			//如果布尔表达式的值都不为true执行的代码
    
    }
    
  4. 嵌套的if结构

     if(布尔表达式1){
    
    			//如果布尔表达1的值为true执行代码
    
    			if(布尔表达式2){
    
    							//如果布尔表达式2的值为true执行代码
    
    		}
    
    }
    
  5. switch多选择结构

    switch(expression){
    
    		case value:
    
    				//语句
    
    				break//可选
    
    		case value:
    
    				//语句
    
    				break//可选
    
    				//语句
    
    }
    
    • 语句中变量类型可以是byte、short、int、char。
  • 从JavaSE7开始switch支持字符串String类型。
    • 同时case标签必须为字符串常量或字面量。

循环结构

  1. while循环

    int i=0;
    int sum=0;
    while(i<=100){
    	sum+=i;
    	i++;
    }
    System.out.println(sum);
    
  2. do…while循环

    //对于while语句而言 如果不满足条件则不能进入循环
    //但有时候我们需要至少执行一次
    //区别 while先判断后执行 do...while先执行后判断
    //do...while循环至少执行一次,这是他们主要差别
    int i=0;
    int sum=0;
    do{
    	sum+=i;
    	i++;
    }while(i<=100)
    System.out.println(sum);
    

4.For循环

//for循环是支持迭代的一种通用结构,是最有效,最灵活的循环结构
//for循环执行次数是在执行前就确定的。语法格式:
int sum=0;
for(int i=1;i<=100;i++){
    sum+=i;
}
System.out.println(sum);
  1. Foreach循环
//替代for循环的循环 foreach循环
/*
 * for(数组元素的类型 自定义的循环变量:要遍历的数组名称){
 * 
 * }
 */
int[] ns= {1,2,3,4,5,6,7,8,9};
for(int num:ns) {
 System.out.println(num);
}

嵌套循环中的break和continue

  • break和continue如果用在二重循环中:
  • break:只能退出关键字所在的当前循环;
  • continue:结束关键字坐在的循环的当此循环,进入下次循环。
关于goto关键字
  • goto关键字很早就在程序设计语言中出现。尽管goto仍是Java的一个保留字,但并未在语言中得到使用;Java没有goto。然而在break和continue这两个关键字的身上,我们仍看出一些goto的影子–带标签的break和continue

  • “标签”是指后面跟一个冒号的标识符,例如:label:

  • 对Java来说唯一用到标签的地方就是在循环语句之前。二在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,他们就会终端到存在标签的地方。

    package com.Duan.struct;
    
    public class LabelDemo {
        public static void main(String[] args) {
            //打印101-150之间所有的质数
            //质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
    
            //不建议使用!!
            outer:for (int i=101;i<150;i++){
                for(int j=2;j<i/2;j++){
                    if (i % j == 0){
                        continue outer;
                    }
                }
                System.out.print(i+" ");
            }
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PD3.0协议的通信流程控制代码需要结合具体的硬件平台和开发环境进行编写,以下是一个基于STM32微控制器和CubeMX开发环境的PD3.0通信流程控制代码示例: 1. 初始化PD3.0协议 ``` void PD_Init(void) { /* 配置GPIO引脚,设置为PD3.0通信协议的I2C接口模式 */ GPIO_InitTypeDef GPIO_InitStruct = {0}; /* 配置I2C控制器,设置I2C的时钟频率、地址、中断等参数 */ I2C_HandleTypeDef hi2c1 = {0}; hi2c1.Instance = I2C1; hi2c1.Init.Timing = 0x10909CEC; hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; hi2c1.Init.OwnAddress1 = 0; hi2c1.Init.OwnAddress2 = 0; hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK; hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK; if (HAL_I2C_Init(&hi2c1) != HAL_OK) { Error_Handler(); } /* 配置PD控制器,设置PD的状态机和消息处理等参数 */ PD_HandleTypeDef hpd = {0}; hpd.Instance = PD_INSTANCE; hpd.Init.Mode = PD_MODE_DFP; hpd.Init.Role = PD_ROLE_SOURCE; hpd.Init.StateMachine = PD_STATE_MACHINE_DISABLED; hpd.Init.MessageHandler = PD_MessageHandler; if (HAL_PD_Init(&hpd) != HAL_OK) { Error_Handler(); } /* 启动PD控制器 */ if (HAL_PD_Start(&hpd) != HAL_OK) { Error_Handler(); } } ``` 2. PD3.0消息处理函数 ``` void PD_MessageHandler(PD_HandleTypeDef *hpd, PD_MessageTypeDef *pmsg) { /* 根据消息类型进行处理 */ switch (pmsg->header.message_type) { case PD_MSG_CONTROL_REQUEST: /* 控制请求消息处理 */ PD_ControlRequest(hpd, pmsg); break; case PD_MSG_DATA_REQUEST: /* 数据请求消息处理 */ PD_DataRequest(hpd, pmsg); break; case PD_MSG_CONTROL_RESPONSE: /* 控制响应消息处理 */ PD_ControlResponse(hpd, pmsg); break; case PD_MSG_DATA_RESPONSE: /* 数据响应消息处理 */ PD_DataResponse(hpd, pmsg); break; case PD_MSG_EXTENDED: /* 扩展消息处理 */ PD_ExtendedMessage(hpd, pmsg); break; default: break; } } ``` 3. PD3.0控制请求消息处理函数 ``` void PD_ControlRequest(PD_HandleTypeDef *hpd, PD_MessageTypeDef *pmsg) { /* 根据控制请求消息内容进行相应的处理,例如发送控制响应消息等 */ ... } ``` 4. PD3.0数据请求消息处理函数 ``` void PD_DataRequest(PD_HandleTypeDef *hpd, PD_MessageTypeDef *pmsg) { /* 根据数据请求消息内容进行相应的处理,例如发送数据响应消息等 */ ... } ``` 5. PD3.0控制响应消息处理函数 ``` void PD_ControlResponse(PD_HandleTypeDef *hpd, PD_MessageTypeDef *pmsg) { /* 根据控制响应消息内容进行相应的处理,例如更新状态机等 */ ... } ``` 6. PD3.0数据响应消息处理函数 ``` void PD_DataResponse(PD_HandleTypeDef *hpd, PD_MessageTypeDef *pmsg) { /* 根据数据响应消息内容进行相应的处理,例如更新状态机等 */ ... } ``` 7. PD3.0扩展消息处理函数 ``` void PD_ExtendedMessage(PD_HandleTypeDef *hpd, PD_MessageTypeDef *pmsg) { /* 根据扩展消息内容进行相应的处理,例如发送扩展响应消息等 */ ... } ``` 以上是一个简单的PD3.0通信流程控制代码示例,具体实现方式会因硬件平台和开发环境的不同而有所不同。在实际开发中,您需要根据实际情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值