求做一个简单的JAVA代码

我想做一个万年历,但有几个地方不会弄 求各位帮帮忙,
1.判断改年份是否为闰年
2.计算该月天数
3.计算该月第一天是星期几
4.格式化输出该年月

提示:判断闰年的条件,能被4整除但不能被100整除;或者能被400整除
晕。。。我刚学的JAVA 你的方法太高深了。。。 我拿这个区交作业。。。肯定会被骂的。。。

各位就帮我写出来第一个问题就行了 判断年份是否为闰年

1.判断改年份是否为闰年,见下面的check()方法
2.计算该月天数,用Calendar类的getActualMaximum()方法能返回指定日历字段可能拥有的最大值,Calendar.DAY_OF_MONTH就是月份字段了
3.计算该月第一天是星期几,复制一个日历实例,把复制的日历设成当月1号,求出1号是星期几,用get()方法,返回指定日历字段的值,Calendar.DAY_OF_WEEK表示星期字段,get(Calendar.DAY_OF_WEEK)返回1 - 7,是星期天 - 星期六,而不是星期一 - 星期天
4.格式化输出该年月,用SimpleDateFormat类格式化日期,见下面的代码:

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

public class CalendarTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//使用Calendar类处理日期
Calendar objCalendar = Calendar.getInstance();

//4.格式化输出该年月,用SimpleDateFormat类格式化日期
//格式:"yyyy年MM月dd日 HH:mm:ss",其中HH是24小时制,hh是12小时制
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println("当前时间:" + sdf.format(objCalendar.getTime()));

//1.判断改年份是否为闰年,见下面的check()方法
System.out.println("是否闰年:" + check(objCalendar));

//2.计算该月天数
//Calendar类的getActualMaximum()方法能返回指定日历字段可能拥有的最大值,Calendar.DAY_OF_MONTH就是月份字段了
System.out.println("该月天数:" + objCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));

//3.计算该月第一天是星期几
//复制一个日历实例
Calendar temp = (Calendar)objCalendar.clone();
//把复制的日历设成当月1号
temp.set(Calendar.DAY_OF_MONTH, 1);
//求出1号是星期几,用get()方法,返回指定日历字段的值,Calendar.DAY_OF_WEEK表示星期字段
//get(Calendar.DAY_OF_WEEK)返回1 - 7,是星期天 - 星期六,而不是星期一 - 星期天
System.out.println("该月第一天是星期:" + (temp.get(Calendar.DAY_OF_WEEK) - 1));
}

//判断改年份是否为闰年
public static boolean check(Calendar c) {
int year = c.get(Calendar.YEAR);
if(year%400 == 0)
return true;
if(year%4==0 && year%100!=0)
return true;
return false;
}
}

输出如下:
当前时间:2009年05月07日 10:43:03
是否闰年:false
该月天数:31
该月第一天是星期:5
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-07
如果做第一个的话,比不是都知道判断闰年的条件了吗?还不简单?
我给你点提示,自己写吧~~~
if(year%4 == 0 && year%100 != 0) {//变量year你自己在你的程序中定义过

}else if(year%400 == 0) {

}
就用上面的结构做吧,%是求模去余运算符~
第2个回答  2009-05-07
用Excel能实现
第3个回答  2009-05-11
import java.util.Scanner;

public class TestWNL {

/**
* @param args
*/
public static void main(String[] args) {
int year, month, days;
boolean isR = false;
Scanner sc = new Scanner(System.in);

System.out
.println("************************* 欢 迎 使 用 万 年 历 ****************************\n");
System.out.print("请输入年份:");
year = sc.nextInt();
System.out.print("\n请输入月份:");
month = sc.nextInt();
System.out.print("\n请输入日期:");
days = sc.nextInt();

if(year%4==0 && year%100!=0 || year%400 ==0)
isR = true;
String txtYear = "";

if(isR)
txtYear = "闰年";
else
txtYear = "平年";

int sumDay = 0;

//得到1900,1,1日到今年的总天数
for (int i = 1900; i < year; i++) {
if(i%4==0 && i%100!=0 || i%400 ==0)
sumDay+=366;
else
sumDay+=365;
}

//今年的月份的总天数 加上 总天数
for (int i = 1; i < month; i++) {
sumDay += getSumDay(i,isR);
}
System.out.println("加上月份的天数"+sumDay);

int first = sumDay +1;

sumDay += days;//总天数加上今年的号数
System.out.println("加上月份和天数的天数"+sumDay);

int x = sumDay % 7; //得到今天是星期几
String week = "";
switch (x) {
case 0:
week = "星期日";
break;
case 1:
week = "星期一";
break;
case 2:
week = "星期二";
break;
case 3:
week = "星期三";
break;
case 4:
week = "星期四";
break;
case 5:
week = "星期五";
break;
case 6:
week = "星期六";
break;
}
System.out.println(year+"年"+month +"月"+days+"日是星期"+week);

System.out.print("\n\n星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n");

int p = 0;
first %=7;
for (; p < first; p++) {
System.out.print("\t");
}

for (int i = 1; i <= getSumDay(month,isR); i++) {
System.out.print(i + "\t");
if((p+i)%7==0)
System.out.println();
}
}

static int getSumDay(int i,boolean isR) {
int days = 0;
switch(i) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days = 31;
break;
case 4: case 6: case 9: case 11:
days = 30;
break;
case 2:
if(isR)
days = 29;
else
days = 28;
break;
}

return days;
}

}
相似回答