如何用Java实现判断这一天是这一年中的第几天

最近在学习Java语言,和python一样,都是面向对象的语音。在学习了基本的变量和数据类型、运算符、流程控制语句后,就可以实现一些有趣的功能。例如,告诉你今天是2020年10月25号,你能告诉别人该天是这一年中的第几天嘛?接下来,小编带大家用Java实现这个功能。
首先,要分析年份是不是闰年,那么如何判断闰年呢?

  1. 年份能被4整除且不能被100整除;
  2. 年份能被400整除;
    上述条件满足一个即可,也即是或的关系。
    其次,累加这个月之前的每个月的天数 再加上该月的天数,是不是就达到我们的目的了?
    举个栗子,假设现在是2020年10月25日,那么是不是把1-9月份的天数加起来,再加上这个月的25天,就是最后的结果?(闰年的作用在于判断2月份是28天还是29天)

分析结果发现,使用switch case结构不带break时,可以实现这样的功能。代码结构如下:

/*
提示用户输入年月日信息,判断这一天是这一年中的第几天并打印。
*/
import java.util.Scanner;
public class judgeYear{
	public static void main(String[] args){
		// 1. 提示用户输入年月日信息
		System.out.println("请输入年月日信息:");
		Scanner sc = new Scanner(System.in);
		int year = sc.nextInt();
		int month = sc.nextInt();
		int day = sc.nextInt();
		//System.out.println("year"+year+"month"+month+"day"+day);
		int sumDays = 0;
		switch(month){
			case 12: sumDays+=30; //11月总天数
			case 11: sumDays+=31;  //10月总天数
			case 10: sumDays+=30; //9月总天数
			case 9: sumDays+=31; //8月总天数
			case 8: sumDays+=31; //7月总天数
			case 7: sumDays+=30;  //6月总天数
			case 6: sumDays+=31;  //5月总天数
			case 5: sumDays+=30;  //4月总天数
			case 4: sumDays+=31; //3月总天数
			case 3: if((0==year%4 && 0!= year%100)||(0==year%400)){
				sumDays+=29; //2月总天数
				
			}else{
				sumDays+=28;
			}
			case 2: sumDays+=31; //1月天数
			case 1: sumDays+=day; //当月天数
				
		}
		System.out.println("这一天是这一年中的第"+sumDays+"天");
		
	}
}

编译、运行代码效果如下:
在这里插入图片描述
可能有的小伙伴会对switch case这里比较迷糊,我给分析下,假设输入的日期是10 25,那么switch分支结构就会去匹配case 10,即将9月的天数累加到事先声明的变量里,因为没有break语句,所以,switch分支结构会继续向下执行case 9、case 8,直到case 1。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值