题目要求:输出特定日期是星期几
以键盘录入的形式提供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;
}
}
}
分享到:
相关推荐
根据给定的文件信息,我们可以总结出一个关于Java编程中如何输入特定的年月日,并在控制台上打印出该月完整日历的关键知识点。这个知识点不仅涵盖了基础的用户输入处理,还包括了日期计算、闰年判断以及日历格式化...
1、求total的初值; 2、计算当年前几月的累计天数,加到total上。 3、将本月天数加到total上。
核心功能包括判断闰年、确定1900年1月1日是星期一这一基础信息,并据此计算出指定日期是一周中的哪一天。 #### 二、关键函数解析 ##### 2.1 判断闰年的函数`leap()` 此函数接收一个整数参数`year`(表示年份),并...
6. **计算星期**:最后,将累计的天数对7取余,余数就是对应的星期。余数为0代表星期日,1代表星期一,以此类推。 在`datetoweek.cpp`文件中,可能包含类似以下的实现: ```c #include // ... 定义Date结构体 .....
标题中的“判断任意一天是星期几”是一个常见的编程问题,通常涉及到日期和时间的计算。在C#中,我们可以利用System.DateTime类来解决这个问题。这个小软件可能是为实验课设计的,目的是让学生掌握日期处理的基本...
在SQL中,根据已知的年、月、第几周和周几来获取具体的日期是一项常见的日期处理任务,尤其在数据分析或报表生成时非常有用。本文将深入探讨如何使用SQL来实现这一功能,并以MS SQL Server为例进行示例说明。 首先...
已知,1900年1月1日是星期1,用户随机输入年月日,计算星期几 实现思路: 一、知道1900年1月1日为星期一,求输入的年份月份与1900年1月1日相隔的总天数。闰年366天,平年365天。 通过运算符实现闰年判断的条件: ...
继给定两个日子计算相差天数和给定某个日子,返回在一周的第几天,接下来还有一个给定某年某月,输出该月日历; 其实思想很简单,都是与1900-1-1相减,这样得到每月的第一天星期几,这样便于输出第一行; 接下来将...
3. 已知年月日计算星期的函数: `Function myweekday(ByVal y As Long, ByVal m As Long, ByVal d As Long) As Long` 这个函数根据给定的年`y`、月`m`和日`d`返回对应的星期几。算法基于蔡勒公式(Zeller's ...
由于已知2007年1月1日是星期一,我们可以用这个信息作为起始点,通过计算目标日期与2007年1月1日之间的天数差来确定目标日期的星期。一周有7天,所以天数差除以7的余数就是目标日期相对于星期一的偏移量。 为了实现...
在合法的月份内,`calendar.monthrange()`函数用于获取指定年份和月份的一些信息,返回一个元组,其中第一个元素表示月份第一天是星期几(0表示周一,1表示周二,以此类推),第二个元素是该月份的总天数。...
1. 计算星期几的方法是通过将天数除以7得到的余数确定。 2. 超过下午1点的时刻转换为24小时制,反之亦然。 3. 计算经过的时间是用结束时间减去开始时间。 4. 常见的时间单位及其换算关系。 5. 如何判断2月的天数,...
输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 知识点: * 输入输出语句的使用 * 日期和时间的处理 * 算法设计 2. 小学生测验功能要求:电脑随机出 10 道题,每题 10 分,程序结束时显示学生得分...
计算某一天是星期几,通常需要知道从已知日期开始到目标日期经过了多少天,然后用这个天数除以7,余数决定是星期几。 解题策略主要包括: - **观察法**:通过观察数列或图形的排列,找出重复的模式。 - **逆推法**...
在C语言中,这通常涉及到日期和时间的处理,包括计算星期几、月份天数、闰年规则等。首先,我们需要了解基本的日期和时间表示,比如公元纪年、月份和日期。在C语言中,我们可以使用结构体来存储这些信息,例如定义一...
20. 时间、长度和货币单位换算:年月日、米分米、元角分以及时间的换算。 21. 24小时制的理解:17时是下午5时,12时在24小时制下可以表示午夜0点或正午12点。 22. 错误纠正:除法和乘法的混淆,通过错误答案反推...
- 年月日之间的转换,2年等于24个月,48小时等于2天。 - 面积单位换算,平方米与平方分米、平方厘米的关系。 - 基本的乘法和加法运算,如90的3倍是270,6.2与3.9的和是10.1。 - 平均数的概念,小红三次考试的...
例如,通过计算日期与某个已知日期的差,结合月份的天数和星期的周期(一周7天)来确定特定日期是星期几。 解决周期问题的主要策略包括观察法、逆推法和经验法。观察法是直接寻找重复模式;逆推法则从结果反向推导...
5. 公历中的星期计算:平年和闰年全年有多少个完整的星期,以及剩余的天数。 这些知识点构成了三年级下册数学学习的基础,帮助学生建立起对方向、计算、数据分析和时间管理的理解。通过掌握这些内容,学生可以提升...