关于日期和年份的。。。

shenjiao080601 2011-06-24 04:05:39
(帮人回答的一帖子,找不见发帖人了,就发源码写出来了,希望他能看见)
要求:从控制台接受任意输入的年份和月份,(1)判断该年份是否是闰年,(2)计算该月的天数,(3)计算该月第一天是星期几(4)格式化输出该月日历
package com.xinzhanedu;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;

public class Cheakyear {
static int year = 0;// 存储输入的年份
static int month = 0;// 存储输入的月份
static boolean flag=false;// 是否是闰年的标志;默认为不是闰年
Scanner input = new Scanner (System.in);

public static void main(String[] args){
Cheakyear ck = new Cheakyear();// 创建类的对象
ck.input();// 调用方法
flag = ck.testYear(year);
if(flag){
System.out.println("您所输入的年份是闰年");
}else{
System.out.println("您所输入的年份不是闰年");
}
int totalDay = ck.testMonth(year,month);
System.out.println(year+"年的"+month+"月共有"+totalDay+"天");

String dayOfWeek = ck.getDay(year,month);
System.out.println("该月的第一天是:"+dayOfWeek);

ck.printCalendar(year,month);
}
public void input (){// 实现控制台输入数据的接受
System.out.println("请输入您所要判断的年份:");
year = input.nextInt();
System.out.println("请输入您所要判断的月份:(1——12)");
month = input.nextInt();
}
public boolean testYear(int year){// 判断是否是闰年
if(year%400==0||(year%4==0&&year%100!=0)){
return true;
}else{
return false;
}
}
public int testMonth(int year,int month){// 判断输入的月份有多少天
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
return 31;
}else if(month==4||month==6||month==9||month==11){
return 30;
}else if(flag&&month==2){// 闰年的2月有29天
return 29;
}else if(!flag&&month==2){// 闰年的2月有28天
return 28;
}else{
return 0;
}
}
public String getDay(int year,int month){// 根据月份判断该月第一天是星期几
String retVal= " ";
Calendar calendar=Calendar.getInstance();
calendar.set(Calendar.YEAR,year); //设置年份,月份,以及日期
calendar.set(Calendar.MONTH,month-1);
calendar.set(Calendar.DATE,1);
//calendar.set(year,month-1,1);//或者用此方法代替上面的三行
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
switch (dayOfWeek){
case 1:
retVal= "星期日 ";
break;
case 2:
retVal= "星期一 ";
break;
case 3:
retVal= "星期二 ";
break;
case 4:
retVal= "星期三 ";
break;
case 5:
retVal= "星期四 ";
break;
case 6:
retVal= "星期五 ";
break;
case 7:
retVal= "星期六 ";
break;
}
return retVal;
}
public long getTotalDays(int year,int month){ /*从1900年1月1日到输入年份一共多少天*/
long sum=0;
for(int i=1900;i<year;i++){ /*计算year-1900年之间的天数*/
if(testYear(i)){
sum+=366;
}
else {
sum+=365;
}
}
for(int i=1;i<=month;i++){ /*计算yaer年里,1月到month月的天数*/
sum+=testMonth(year,i);
}
return sum;
}
public void printCalendar(int year,int month){
int i;
System.out.println("**************************");
System.out.println(year+"年"+month+"月");
long sum = getTotalDays(year,month-1); /*计算 m个月的前m-1个月的天数*/
int monthDay=testMonth(year,month);
System.out.println("Sun Mon Tue Wed Thu Fri Sat \n");
for(i=1;i<=sum%7+1;i++){
if(sum%7+1==7){
break;
}
System.out.print(" "); /*8个空格*/
}
for(i=1;i<=monthDay;i++){
if((i+sum%7)%7==0){
System.out.print("\n");
}
if(i<=9){
System.out.print(i+" "); /*7个空格*/
}else{
System.out.print(i+" "); /*6个空格*/
}
}
}
}
...全文
150 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2011-06-25
  • 打赏
  • 举报
回复
接。。。。。。
飞跃颠峰 2011-06-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shenjiao080601 的回复:]

谢谢。。貌似还有20分的问题分呢,看你来看我了,分半给你
[/Quote]

更是好人
shenjiao080601 2011-06-25
  • 打赏
  • 举报
回复
谢谢。。貌似还有20分的问题分呢,看你来看我了,分半给你
飞跃颠峰 2011-06-24
  • 打赏
  • 举报
回复
真是好人
shenjiao080601 2011-06-24
  • 打赏
  • 举报
回复
运行结果:
请输入您所要判断的年份:
2011
请输入您所要判断的月份:(1——12)
6
您所输入的年份不是闰年
2011年的6月共有30天
该月的第一天是:星期三
**************************
2011年6月
Sun Mon Tue Wed Thu Fri Sat

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧