CH02_switch语句

本文通过两个示例展示了 Java 中 switch 语句的基本使用方法。第一个示例使用整型变量作为 switch 的条件判断,并演示了不同 case 的执行过程。第二个示例则展示了如何使用字符类型的数据进行 switch 判断。
package cn.pzhu.java.ch02;

public class SwitchDemo {
	public static void main(String[] args) {
		int i=100;		
		//long i=100;
		//byte i=100;  //erro:case 200:
		switch(i){
		case 0:
			System.out.println("case 0");
			break;
		case 100:
			System.out.println("case 100");
			break;
		case 200:
			System.out.println("case 200");
			break;
		default:
			System.out.println("default");
			break;
		}
		
		char c='a';
		switch(c){
		case 'a':
			System.out.println("case 0");
			break;
		case 'b':
			System.out.println("case 100");
			break;		
		default:
			System.out.println("default");
			break;
		}
	}

}


while (switch_retry_num < SWITCH_RETRY && p1p2) // 最大尝试次数为3 { // 打印各信道对应index MON_CHAN_UTIL check_data = {0}; best_chan_idx = cap_indices_prim[switch_ch_num]; best_chan_num = radio_region_chanIndex2Num(rid, best_chan_idx + 1); max_capacity_prim = channel_capacity_prim[best_chan_idx]; /* if ((wkChanNum_idx / chan_flag) == (best_chan_idx / chan_flag) || is_dfs_ch(best_chan_num)) // 次信道和dfs信道不做切换考虑 { switch_ch_num++; continue; } */ if ((wkChanNum_idx) == (best_chan_idx) || is_dfs_ch(rid,best_chan_num)) // 本信道和dfs信道不做切换考虑 { dfs_flag++; switch_ch_num++; continue; } CH_DEPLOY_TEST("最佳信道:%d (容量:%f)", best_chan_num, max_capacity_prim); CH_DEPLOY_TEST("第%d次切换尝试,从信道%d执行信道切换到%d", switch_retry_num + 1, wkChanNum, best_chan_num); // max_capacity = max_capacity * probability_decision(work_capacity)*using_probability_decision(work_using_20s); if (switch_decision(best_chan_idx, max_capacity_prim, work_capacity, switch_threshold * switch_param)) { api_widsWipsSetScan(rid, best_chan_num, &check_data); double refresh_cap = compute_instant_capacity_bk(check_data); channel_capacity[best_chan_idx] = cap_calculate(channel_capacity[best_chan_idx], refresh_cap); // 更新20Mhz信道扫描结果 for (int i = 0; i < chan_flag; i++) // 更新大带宽信道扫描结果 { channel_capacity_prim[best_chan_idx / chan_flag * chan_flag + i] = primary_cap_calculate(channel_capacity, chan_flag, best_chan_idx / chan_flag * chan_flag + i); // 邻居信道如何更新? } max_capacity_prim = channel_capacity_prim[best_chan_idx]; /* 是否需要重新排序?现有的这个逻辑无法避开自身信道 qsort(cap_indices_prim, CH_NUM, sizeof(int), compare_cap); best_chan_idx = cap_indices_prim[0]; max_capacity_prim = channel_capacity_prim[best_chan_idx]; */ if (switch_decision(best_chan_idx, max_capacity_prim, work_capacity, switch_threshold * switch_param)) { int max_capacity = 0; for (int i = 0; i < chan_flag; i++) // 选择宽带内最优20Mhz信道 { if (channel_capacity[best_chan_idx / chan_flag * chan_flag + i] > max_capacity) { max_capacity = channel_capacity[best_chan_idx / chan_flag * chan_flag + i]; best_chan_idx = best_chan_idx / chan_flag * chan_flag + i; CH_DEPLOY_TEST("信道%d容量:%f", best_chan_num, channel_capacity[best_chan_idx]); } } CH_DEPLOY_TEST("信道%d背景扫描结果符合切换预期", best_chan_num); //api_wlan_setChannelAndWidthForCSA_CHDP(rid, best_chan_num,width); // usleep(SWITCHING_TIMEOUT); last_switch_time = time(NULL); // current_working_ch = best_chan_idx; switch_flag = 1; break; } else { // CH_DEPLOY_TEST("信道%d背景扫描偏差较大,信道切换终止",radio_region_chanIndex2Num(rid,channel_index)); CH_DEPLOY_TEST("信道%d背景扫描结果不符合切换预期,信道切换终止,刷新背景信道结果", best_chan_num); } } else { CH_DEPLOY_TEST("未触发信道切换。"); break; } switch_ch_num++; switch_retry_num++; } //触发DFS信道选择条件:5Ghz;未触发信道切换;有剩余重评估次数;有高容量DFS信道;工作容量低 switch_ch_num = 0; while((1 == rid) && switch_retry_num < SWITCH_RETRY && p1p2 && dfs_flag && !switch_flag && work_capacity < 50) { // 打印各信道对应index CH_DEPLOY_TEST("有高容量DFS信道,进入切换备选"); dfs_flag --; MON_CHAN_UTIL dfs_check_data = {0}; best_chan_idx = cap_indices_prim[switch_ch_num]; best_chan_num = radio_region_chanIndex2Num(rid, best_chan_idx + 1); max_capacity_prim = channel_capacity_prim[best_chan_idx]; if ((wkChanNum_idx) == (best_chan_idx) || !is_dfs_ch(rid,best_chan_num) || is_wradar_ch(rid,best_chan_num)) // 过滤非dfs信道和天气雷达信道 { switch_ch_num++; continue; } CH_DEPLOY_TEST("最佳dfs信道:%d (容量:%f)", best_chan_num, max_capacity_prim); CH_DEPLOY_TEST("第%d次切换尝试,从信道%d执行信道切换到DFS信道%d", switch_retry_num + 1, wkChanNum, best_chan_num); // max_capacity = max_capacity * probability_decision(work_capacity)*using_probability_decision(work_using_20s); if (switch_decision(best_chan_idx, max_capacity_prim, work_capacity, switch_threshold * switch_param)) { api_widsWipsSetScan(rid, best_chan_num, &dfs_check_data); double refresh_cap = compute_instant_capacity_bk(dfs_check_data); channel_capacity[best_chan_idx] = cap_calculate(channel_capacity[best_chan_idx], refresh_cap); // 更新20Mhz信道扫描结果 for (int i = 0; i < chan_flag; i++) // 更新大带宽信道扫描结果 { channel_capacity_prim[best_chan_idx / chan_flag * chan_flag + i] = primary_cap_calculate(channel_capacity, chan_flag, best_chan_idx / chan_flag * chan_flag + i); // 邻居信道如何更新? } max_capacity_prim = channel_capacity_prim[best_chan_idx]; if (switch_decision(best_chan_idx, max_capacity_prim, work_capacity, switch_threshold * switch_param)) { int max_capacity = 0; for (int i = 0; i < chan_flag; i++) // 选择宽带内最优20Mhz信道 { if (channel_capacity[best_chan_idx / chan_flag * chan_flag + i] > max_capacity) { max_capacity = channel_capacity[best_chan_idx / chan_flag * chan_flag + i]; best_chan_idx = best_chan_idx / chan_flag * chan_flag + i; CH_DEPLOY_TEST("信道%d容量:%f", best_chan_num, channel_capacity[best_chan_idx]); } } CH_DEPLOY_TEST("DFS信道%d背景扫描结果符合切换预期", best_chan_num); api_wlan_setChannelAndWidthForCSA_CHDP(rid, best_chan_num,width); // usleep(SWITCHING_TIMEOUT); last_switch_time = time(NULL); // current_working_ch = best_chan_idx; switch_flag = 1; break; } else { // CH_DEPLOY_TEST("信道%d背景扫描偏差较大,信道切换终止",radio_region_chanIndex2Num(rid,channel_index)); CH_DEPLOY_TEST("DFS信道%d背景扫描结果不符合切换预期,信道切换终止,刷新背景信道结果", best_chan_num); } } else { CH_DEPLOY_TEST("未触发dfs信道切换。"); break; } switch_ch_num++; switch_retry_num++; } } else { CH_DEPLOY_TEST("未触发切换决策"); } 这段代码由两个非常相似的部分组成,能否合为一个?
最新发布
11-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值