`
suifan繁
  • 浏览: 18091 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

已知年月日如何去计算星期

    博客分类:
  • Java
阅读更多
题目要求:输出特定日期是星期几
     以键盘录入的形式提供3个整数,按顺序分别表示为年、月、日。如果只输入一个
    整数则表示年,需要判断该年是否是闰年;如果输入两个整数,则表示年和月,需要
    输出该年中该月的天数;如果输入3个整数,表示为年、月、日,需要输出这一天是
    星期几。

首先先整理一下解题思路
1)进行字符串输入的时候,利用String类中的split()方法,利用“,”进行分割,所以在年月日中间要用逗号隔开。然后再通过Integer.valueOf()方法,将纯数字字符串转换成整数。
2)首先先判断年份是平年还是闰年,再去判断月份,最后判断日,算出这一天是星期几。



import java.util.Scanner;

public class day {
	public static void main(String[] args){
		//a[]数组中存放的是闰年月份天数,数组的下标直接对应月份
		int [] a ={0,31,29,31,30,31,30,31,31,30,31,30,31};
		//b[]数组中存放的是平年月份天数,数组的下标直接对应月份
		int [] b ={0,31,28,31,30,31,30,31,31,30,31,30,31};
		int week =0;//定义计算周几的变量
		System.out.println("请用以下形式输入整数:");
		System.out.println("若只计算平年或闰年,则输入:'年'形式");
		System.out.println("若只计算某年的某月有多少天,则输入:'年,月'形式");
        System.out.println("若要计算某年某月的某天是周几,则输入:'年,月,日'形式");
		Scanner sc = new Scanner (System.in);
		String s = sc.nextLine();
		String[] c = s.split(",");
		int t = c.length;
		
		//根据c数组的长度,利用switch来做判断,分别执行不一样的程序
		switch(t){
		
		//当输入长度是1时,只有年份的输入,则是计算平年闰年
		case 1:
			Integer year =Integer.valueOf(c[0]);
			if((year%4==0)&&(year%100!=0)||year%400==0){
				System.out.println(year+"是闰年");
			}else{
				System.out.println(year+"是平年");
			}
			break;
			
			//当输入长度是2时,只有年份以及月份的输入,则要计算当年的那个月有多少天
		case 2:
			Integer year1 =Integer.valueOf(c[0]);
			Integer month1 =Integer.valueOf(c[1]);
			if((year1%4==0)&&(year1%100!=0)||year1%400==0){
			
				int mon=a[month1];
				System.out.println(year1+"年的"+month1+"月有"+mon+"天");
				
			}else{
			
				int mon=a[month1];
				System.out.println(year1+"年的"+month1+"月有"+mon+"天");	
			}
			
			break;
			
			//当输入长度为3时,我们需要计算那天是周几
		case 3:
			Integer year2 =Integer.valueOf(c[0]);
			Integer month2 =Integer.valueOf(c[1]);
			Integer day =Integer.valueOf(c[2]);
			
			int a1=(year2-1968-1)/4;//计算year2到1970年之间闰年的次数
			int a2 = (year2-1970-1)*365+a1; //计算month之前几个月的总天数
			
			//首先先判断是否是闰年,若是闰年,则进行一下操作
			if((a2%4==0)&&(a2%100!=0)||a2%400==0){
				//day2用于计算那一年月份的天数
				int day2=0;
				//利用数组,计算前几个月的天数总值
				//假如输入的是第五个月的某一天,则先要计算前四个月有多少天,既然是计算闰年,则是使用闰年的那个数组
				for(int i =1;i<month2;i++){
					day2+=a[i];
				}
				//week等于年份天数+月份天数+当前月的第几天,由于1970年1月1号是周四,所以加上4。再利用取余的方法得到星期
				week=(a2+day2+day+4)%7;
				if(week==0){
					System.out.println("这天是星期天");
				}else{

					System.out.println(year2+"年的"+month2+"月的"+day+"日是星期"+week);	
				}
				
			}else{
				//day2用于计算那一年月份的天数
				int day2=0;
				//利用数组,计算前几个月的天数总值
				//若计算的是第五个月的某一天,则先要计算前四个月有多少天
				for(int i =1;i<month2;i++){
					day2+=b[i];
				}
				//week等于年份天数+月份天数+当前月的第几天,由于1970年1月1号是周四,所以加上4。再利用取余的方法得到星期
				week=(a2+day2+day+4)%7;
				if(week==0){
					System.out.println("这天是星期天");
				}else{
					System.out.println(year2+"年的"+month2+"月的"+day+"日是星期"+week);	
				}
			}
			break;
		default:
			System.err.println("请正确输入数据");
			break;
		}
	}
	
}
2
0
分享到:
评论
2 楼 suifan繁 2016-12-15  
由于是新手,想练习一下自己的算法。
1 楼 godandghost 2016-12-13  
可以用Calendar类来解决日期处理问题,不用自己做大段的计算和判断。

相关推荐

    输入年月日,并打印出该月的日历,并显出星期,在日历上标出该日

    根据给定的文件信息,我们可以总结出一个关于Java编程中如何输入特定的年月日,并在控制台上打印出该月完整日历的关键知识点。这个知识点不仅涵盖了基础的用户输入处理,还包括了日期计算、闰年判断以及日历格式化...

    求一个日期(年月日)对应的是星期几

    1、求total的初值; 2、计算当年前几月的累计天数,加到total上。 3、将本月天数加到total上。

    C++,日历1900年1月1日星期一

    核心功能包括判断闰年、确定1900年1月1日是星期一这一基础信息,并据此计算出指定日期是一周中的哪一天。 #### 二、关键函数解析 ##### 2.1 判断闰年的函数`leap()` 此函数接收一个整数参数`year`(表示年份),并...

    C 日期转星期

    6. **计算星期**:最后,将累计的天数对7取余,余数就是对应的星期。余数为0代表星期日,1代表星期一,以此类推。 在`datetoweek.cpp`文件中,可能包含类似以下的实现: ```c #include // ... 定义Date结构体 .....

    判断任意一天是星期几

    标题中的“判断任意一天是星期几”是一个常见的编程问题,通常涉及到日期和时间的计算。在C#中,我们可以利用System.DateTime类来解决这个问题。这个小软件可能是为实验课设计的,目的是让学生掌握日期处理的基本...

    请教用sql实现通过已知的年,月,第几周和周几,得到具体的日期

    在SQL中,根据已知的年、月、第几周和周几来获取具体的日期是一项常见的日期处理任务,尤其在数据分析或报表生成时非常有用。本文将深入探讨如何使用SQL来实现这一功能,并以MS SQL Server为例进行示例说明。 首先...

    编写Java程序随机输入日期计算星期几,打印任意一年的日历

    已知,1900年1月1日是星期1,用户随机输入年月日,计算星期几 实现思路: 一、知道1900年1月1日为星期一,求输入的年份月份与1900年1月1日相隔的总天数。闰年366天,平年365天。 通过运算符实现闰年判断的条件: ...

    给定某年某月,输出该月日历

    继给定两个日子计算相差天数和给定某个日子,返回在一周的第几天,接下来还有一个给定某年某月,输出该月日历; 其实思想很简单,都是与1900-1-1相减,这样得到每月的第一天星期几,这样便于输出第一行; 接下来将...

    Excel VBA_自定义函数集.doc

    3. 已知年月日计算星期的函数: `Function myweekday(ByVal y As Long, ByVal m As Long, ByVal d As Long) As Long` 这个函数根据给定的年`y`、月`m`和日`d`返回对应的星期几。算法基于蔡勒公式(Zeller's ...

    任意年月日历输出1

    由于已知2007年1月1日是星期一,我们可以用这个信息作为起始点,通过计算目标日期与2007年1月1日之间的天数差来确定目标日期的星期。一周有7天,所以天数差除以7的余数就是目标日期相对于星期一的偏移量。 为了实现...

    python3 实现计算年月的首天是周几及月份总天数

    在合法的月份内,`calendar.monthrange()`函数用于获取指定年份和月份的一些信息,返回一个元组,其中第一个元素表示月份第一天是星期几(0表示周一,1表示周二,以此类推),第二个元素是该月份的总天数。...

    三年级数学下册背诵内容.doc

    1. 计算星期几的方法是通过将天数除以7得到的余数确定。 2. 超过下午1点的时刻转换为24小时制,反之亦然。 3. 计算经过的时间是用结束时间减去开始时间。 4. 常见的时间单位及其换算关系。 5. 如何判断2月的天数,...

    C语言课程设计题目.pdf

    输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 知识点: * 输入输出语句的使用 * 日期和时间的处理 * 算法设计 2. 小学生测验功能要求:电脑随机出 10 道题,每题 10 分,程序结束时显示学生得分...

    小学奥数周期问题教师版.doc

    计算某一天是星期几,通常需要知道从已知日期开始到目标日期经过了多少天,然后用这个天数除以7,余数决定是星期几。 解题策略主要包括: - **观察法**:通过观察数列或图形的排列,找出重复的模式。 - **逆推法**...

    万年历源程序 c语言版

    在C语言中,这通常涉及到日期和时间的处理,包括计算星期几、月份天数、闰年规则等。首先,我们需要了解基本的日期和时间表示,比如公元纪年、月份和日期。在C语言中,我们可以使用结构体来存储这些信息,例如定义一...

    三年级数学填空题练习.doc

    20. 时间、长度和货币单位换算:年月日、米分米、元角分以及时间的换算。 21. 24小时制的理解:17时是下午5时,12时在24小时制下可以表示午夜0点或正午12点。 22. 错误纠正:除法和乘法的混淆,通过错误答案反推...

    2011年人教版小学三年级下册数学期末考试题(卷).pdf

    - 年月日之间的转换,2年等于24个月,48小时等于2天。 - 面积单位换算,平方米与平方分米、平方厘米的关系。 - 基本的乘法和加法运算,如90的3倍是270,6.2与3.9的和是10.1。 - 平均数的概念,小红三次考试的...

    小学奥数周期问题解析.doc

    例如,通过计算日期与某个已知日期的差,结合月份的天数和星期的周期(一周7天)来确定特定日期是星期几。 解决周期问题的主要策略包括观察法、逆推法和经验法。观察法是直接寻找重复模式;逆推法则从结果反向推导...

    人教版三年级(下册)数学各单元知识点归纳总结.doc

    5. 公历中的星期计算:平年和闰年全年有多少个完整的星期,以及剩余的天数。 这些知识点构成了三年级下册数学学习的基础,帮助学生建立起对方向、计算、数据分析和时间管理的理解。通过掌握这些内容,学生可以提升...

Global site tag (gtag.js) - Google Analytics