使用JAVA完成万年历

简介: 使用JAVA完成万年历

package cfy.Demos;

import java.util.Scanner;

//万年历

public class Demo1 {

public static void main(String[] args) {

 // TODO 自动生成的方法存根

 

 System.out.println("请输入年:");

 Scanner input = new Scanner(System.in);

 int year = input.nextInt();

 System.out.println("请输入月:");

 int month = input.nextInt();

 //6

 int totalYear = getFormYearTo1900TotalDays(year);

 int totalMonth = getNowYearToDays(year,month);

 //7 求星期 公式是 %7  --> 0~6之间的数字

 //0代表是星期日 以此类推

 int week = (totalMonth+totalYear+1)%7;

 //封装一个方法 这个方法进行格式输出

 FormatCalender(year,month,week);

}

 

/**

 * 格式化日历

 * @param year 输入的年份

 * @param month 输入的月份

 * @param week 输入的星期

 */

public static void FormatCalender(int year,int month,int week)

{

 //发现打印规律是逢7换行

 int cut = 0; //统计计数

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

 //0-6之间//打印星期

 for (int i = 1;i <= 6;i++)

 {

  System.out.print("\t\t");  //此处别用println,不然换行

 

  //统计计数

  cut++;

 }

 //打印日历天数

 for (int i = 1;i <=getNowMonthDays(year,month);i++)

 {

  //打印值

  System.out.print(i+"\t\t");

  cut ++;

  if(cut%7==0)

  {

   System.out.println();

  }

 }

 

}

 

//静态方法

/**

 * 判断闰年

 * @param year 年份

 * @return true 是闰年  false 不是闰年

 */

public static boolean isLeapYear(int year) {

 if ((year%4==0 && year%100!=0) || (year%400==0))

 {

  return true;

 }else

 {

  return false;

 }

}

 

/**

 * 通过月份获取对应的天数

 * @param year 对应的年份

 * @param month 对应的月份

 * @return 月份对应的天数

 */

public static int getNowMonthDays(int year,int month)

{

 switch(month)

 {

 case 2:

  return isLeapYear(year) ? 29 : 28;

 case 4:

 case 6:

 case 9:

 case 11:

  return 30;

  default:

   return 31;

 }

}

 

/**

 *  

 * @param year

 * @return

 */

public static int getFormYearTo1900TotalDays(int year)

{

 //定义一个变量用来计算总天数

 int sum = 0;

 for (int i= 1900;i

 {

  //isLeapYear(year); //计算的始终是同一个年份//因为和当前这个函数的参数同名了

  sum += isLeapYear(i) ? 366 : 365;

 }

 return sum;

}

 

/**

 * 当前月份距离1月1日的总天数

 * @param year 当前年份

 * @param month 当前月份

 * @return

 */

public static int getNowYearToDays(int year,int month)

{

 //定义一个变量用来计算总天数

 int sum = 0;

 for (int i = 1;i < month;i++)

 {

  sum += getNowMonthDays(year,i);

 }

 return sum;

}

 

}

相关文章
|
7月前
|
Java Android开发
万年历【小游戏】(Java课设)
万年历【小游戏】(Java课设)
41 2
|
4月前
|
Java
05 Java代码实现一个小游戏(剪刀石头布)和一个简易的万年历
05 Java代码实现一个小游戏(剪刀石头布)和一个简易的万年历
87 2
|
7月前
|
Java Android开发
日历/万年历【小游戏】(Java课设)
日历/万年历【小游戏】(Java课设)
56 1
日历/万年历【小游戏】(Java课设)
|
安全 固态存储 Java
基于Java的万年历(课设)
Java编程语言自诞生十几年来,已经成功地运用在网络计算及移动等各个领域。对于开发者来说,它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。此次我们用JAVA来设计一个万年历程序,该程序以网页形式运行,并且支持图形化界面,能以日历的形式显示日期与星期,用户能自己输入日期,支持查找日期,并且能够更新日期,是一个简单易用的小应用。
304 1
Java基础用Date类编写万年历
Java基础用Date类编写万年历
|
自然语言处理 算法 Java
【Java作业】万年历
【Java作业】万年历
【Java作业】万年历
|
Java
JAVA 80行代码 写一个 万年历
今天突发奇想,写一个1899年12月31日到2021年的万年历(花了我半小时) /* *我是小白 */ //欢迎大佬来点评 //我想问各位大佬57-83行的日期输出怎末优化,有没有神魔好的建议
116 0
|
Java
使用 java 基础语言实现万年历
已知(只有一个已知条件): 1900年1月1号是星期一 实现的功能: 通过本条件来写一个输入相应的年份和月份就可以在控制台输出相应月份月历 基本的思路: 已知1900年的1月1日是周一,要输出这个月的月历首先最需要知道的就是本月1号是周几,这样我们才可以排列出来这个月的月历第一天的位置 ...
1581 0
|
12天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####