题目要求:输出特定日期是星期几
以键盘录入的形式提供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相减,这样得到每月的第一天星期几,这样便于输出第一行; 接下来将...
此外,关于星期的计算,通常会使用日历或者周期性规律来判断,比如已知12月1日是星期四,我们可以推算出12月24日是星期几。 在时间表达方面,我们常用的有12小时制和24小时制两种。在12小时制中,每个半天的开始...
练习题3则将焦点放在了星期的计算上。通过已知的日期,学生需要推算并制作出完整的月历。这种练习有助于学生了解日历的规律,以及如何根据已有信息推断出未知信息,锻炼了他们的逻辑推理和时间感知能力。这种能力的...
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月的天数,...
年月日的周期问题通常需要结合日期的计算和星期的周期性。这类问题的解决方法是通过计算日期差,并利用7天的星期周期,以确定某一天是星期几。例如,若要找出2023年12月1日后的第100天是星期几,我们可以先计算12月1...
输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 知识点: * 输入输出语句的使用 * 日期和时间的处理 * 算法设计 2. 小学生测验功能要求:电脑随机出 10 道题,每题 10 分,程序结束时显示学生得分...
计算某一天是星期几,通常需要知道从已知日期开始到目标日期经过了多少天,然后用这个天数除以7,余数决定是星期几。 解题策略主要包括: - **观察法**:通过观察数列或图形的排列,找出重复的模式。 - **逆推法**...
在C语言中,这通常涉及到日期和时间的处理,包括计算星期几、月份天数、闰年规则等。首先,我们需要了解基本的日期和时间表示,比如公元纪年、月份和日期。在C语言中,我们可以使用结构体来存储这些信息,例如定义一...
例如,如果已知某年的1月1日是星期几,我们就可以利用这个信息计算出其他日期是星期几。我们可以通过计算两个日期之间的间隔天数,然后除以7,用余数来确定具体是星期几。 对于周期问题的解决步骤,一般可以分为三...