java万年历
import java.util.scanner;
public class calendar {
public static void main(String[] args) {
/**
* 万年历 输入一个年份,再输入一个月份,把那个月的日历打印出来,(1900年1月1日是星期一)。
* a:先输出提示语句,并接受用户输入的年、月。
* b:根据用户输入的年,先判断是否是闰年。(闰年2月有29天,平年2月有28天);
* C:根据用户输入的月来判断月的天数。
* D:用循环计算用户输入的年份距1900年1月1日(星期一)的总天数。
* E:用循环计算用户输入的月份距输入的年份的1月1日共有多少天。*
* F:相加D与E的天数,得到总天数。
* G:用总天数来计算输入月的第一天的星期数。
* H:根据G的值,格式化输出这个月的日历!
* * H提示:
* 1.如果当月1日如果不是周日先打印第一行,再打印后面的
* (1)startDay=0~5,先打印若干个空格,startDay==0时,是星期一,应该在星期日处打印一个空格,以此类推[0~startDay+1)
* (2)再打印第一行的日期[1,7-startDay)
* (3)打印换行
* (4)第一行打印的天数为:1~(6-startDay),所以第二行从7-startDay开始打印,打印到当月总天数为止,每7个换行
* 2.如果startDay是6(周日),直接从1日开始打印到最后一天,每7个换行 提示:当月1日如果不是周日,应循环输出\t以便对齐
* 当月1日的星期数加上日期的号,如果能被7整除,则应换行.
*/
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println();
System.out.println("请输入年份:");
int year = scanner.nextint();
System.out.println("请输入月份:");
int month = scanner.nextInt();
int yearSum = yearSum(year);
int monthSum = monthSum(year, month);
int daySum = yearSum + monthSum;
int oneDay = whatDay(daySum + 1);
System.out.println("\t" + "\t" + "\t" + year + "年" + month + "月");
System.out.println("----------------------------------------------------");
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
print(year, month, oneDay);
}
}
// 判断该年份1月1日到1900年1月1日的总天数
public static int yearSum(int year) {
int yearSum = 0;
if (year < 1900) {
System.out.println("请输入大于1900年的年份:");
} else {
for (int i = 1900; i < year; i++) {
if (isLeapYear(i)) {
yearSum += 366;
} else {
yearSum += 365;
}
}
}
return yearSum;
}
// 判断该月份到1月1日的总天数
public static int monthSum(int year, int month) {
int monthSum = 0;
if (month < 0 || month > 12) {
System.out.println("请输入1~12的正确月份:");
} else {
for (int i = 1; i < month; i++) {
monthSum += monthNumber(year, i);
}
}
return monthSum;
}
// 判断年份是否为闰年
public static boolean isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return true;
} else {
return false;
}
}
// 判断月份的天数
public static int monthNumber(int year, int month) {
int monthNumber = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthNumber = 31;
break;
case 4:
case 6:
case 9:
case 11:
monthNumber = 30;
break;
case 2:
if (isLeapYear(year)) {
monthNumber = 29;
} else {
monthNumber = 28;
}
break;
}
return monthNumber;
}
// 判断该日为星期几
public static int whatDay(int daySum) {
int whatDay = 0;
if (daySum % 7 == 0) {
whatDay = 7;
} else {
whatDay = daySum % 7;
}
return whatDay;
}
// 打印日历
public static void print(int year, int month, int oneDay) {
// 打印空格
for (int i = 0; i < oneDay; i++) {
System.out.print("" + "\t");
}
int day = monthNumber(year, month);
for (int i = 1; i <= day; i++) {
if ((oneDay + i - 1) % 7 == 0) {
System.out.println();
}
System.out.print(" " + i + "\t");
}
}
}
相关阅读
工程师为消费类设备开发了这种语言,并使其与当时适度的CPU兼容时保持了简单性。从那时起,这种面向对象的语言已用于创建简单到
JavaScript主要作用是什么呢?学习编程的同学对JavaScript并不陌生,JavaScript是前端技术中非常重要的内容,是网站搭建必不可少的
java.lang.UnsupportedClassVersionError
截图: 错误日志: Exception in thr
学了一段时间Java了,但是还是很菜,看到反射这一节的时候,就有点厌烦,看不下去了,过了一段时间后我又翻了回来,因为要学习后面的,所以反射
Java 混淆器就是给.class加密以防止反编译的工具 开源的 RetroGuard http://www.retrologic.com/ IBM的 JAX