第十四届蓝桥杯集训——switch——配套用法示例

举报
红目香薰 发表于 2023/01/23 16:58:22 2023/01/23
【摘要】 ​ ​编辑第十四届蓝桥杯集训——switch——配套用法示例示例题目:计算某年某月某日有多少天?输入三个变量,变量year代表年份,变量month代表月份,变量day代表当月的天数。取值范围:1853>=year<=2050;0>month<=12;0>day<=31(大月);0>day<=30(小月);day={28,29}(二月)。取值范围说明:【1853年格里高利历颁布,1853年前没...

 编辑

第十四届蓝桥杯集训——switch——配套用法示例


示例题目:

计算某年某月某日有多少天?

输入三个变量,变量year代表年份,变量month代表月份,变量day代表当月的天数。

取值范围:1853>=year<=2050;0>month<=12;0>day<=31(大月);0>day<=30(小月);day={28,29}(二月)。

取值范围说明:【1853年格里高利历颁布,1853年前没有平年和闰年之分。】

输入示例1:

1853 12 31

输出示例1:

365

输入示例2:

2020 3 1

输出示例2: 

61

为了方便测试,我们先写固定的数据,我们测试数据1,因为计算正确平年肯定是365天。

分析过程:

1、月份与天数是累计的关系,大月31天,小月30天,二月份闰年29天、平年28天。

2、判断如年平年

3、使用switch进行倒序累计,有对应的月份向1月份进行累计,最后累加当月日期。

4、根据输入范围确定,可以去掉switch的default进行计算,不会出现月份异常。

package com.item.action;

public class Main {

	public static void main(String args[]) {
		// 年份用于判断是否闰年
		int year = 1983;
		// 月份用于累加月份天数
		int month = 12;
		// 日期用于最终天数
		int day = 31;
		// 数量用于累计
		int count = 0;
		// 通过月份进行检索
		switch (month) {
		case 12:
			count += 30;
		case 11:
			count += 31;
		case 10:
			count += 30;
		case 9:
			count += 31;
		case 8:
			count += 31;
		case 7:
			count += 30;
		case 6:
			count += 31;
		case 5:
			count += 30;
		case 4:
			count += 31;
		case 3:
			// 判断闰年与否
			if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
				count += 29;
			} else {
				count += 28;
			}
		case 2:
			// 二月份开始累计1月份天数
			count += 31;
		case 1:
			// 累计最后一天
			count += day;
			// 计算到最后一个月份就停止。
			break;
		}
		// 输出结果
		System.out.println(count);
	}
}

输出效果:

编辑

使用扫描器输入变量效果:

package com.item.action;

import java.util.Scanner;

public class Main {

	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		// 年份用于判断是否闰年
		int year = sc.nextInt();
		// 月份用于累加月份天数
		int month = sc.nextInt();
		// 日期用于最终天数
		int day = sc.nextInt();
		sc.close();
		// 数量用于累计
		int count = 0;
		// 通过月份进行检索
		switch (month) {
		case 12:
			count += 30;
		case 11:
			count += 31;
		case 10:
			count += 30;
		case 9:
			count += 31;
		case 8:
			count += 31;
		case 7:
			count += 30;
		case 6:
			count += 31;
		case 5:
			count += 30;
		case 4:
			count += 31;
		case 3:
			// 判断闰年与否
			if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
				count += 29;
			} else {
				count += 28;
			}
		case 2:
			// 二月份开始累计1月份天数
			count += 31;
		case 1:
			// 累计最后一天
			count += day;
			// 计算到最后一个月份就停止。
			break;
		}
		// 输出结果
		System.out.println(count);
	}
}

编辑

这种switch用法还是比较有效的,这算是一种结构使用的技巧,为后续我们自行探解解题技巧提供了一定的思维方向。 

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。