简单日历的制作

在家无聊突然想到写个日历玩玩,这里我用的最简单的方法做的一个日历查询,在JAVA控制台输出;


需求:根据用户输入的年份和月查询出当月的日历;


思路:1,你得知道每月的1号是这个月的星期几,;

    2,这个月是闰月还是平月;

    3,这个月是大月还是小月;

先就这几个思路,细节在下面慢慢来讲解;


先说几个公式:求润年 能被4整除并且不能被100整除或者能被400整除;

    求这个月的1号是这个月的星期几  1900年到这个月的1号的总天数去模上7 模出来是几,这个月的1号就是这个月的星期几;、

最后做出来差不多就是下面这种形式:



代码我用几部分显示出来:

第一部分:在控制台接受用户的输入


第二部分:根据用户输入的年和月查询出距1900年一共有多少天


第三部分就是显示在控制台的判断(润平年和大小月)


在代码外边套上一个while(){}就能实现用户一直查询日历了,其实很简单,就是几个判断和循环。




下面是整个代码:

import java.util.Scanner;
public class Test06 {
public static void main(String[] args) {
while(true){
int sum=0;
Scanner in =new Scanner(System.in);
System.out.println("\n"+"======日历======");
System.out.println("请输入要查询的年份");
int year=in.nextInt();
System.out.println("请输入要查询的月份");
int month=in.nextInt();

for(int i=1900;i<year;i++){
if(i%4==0 && i%100!=0 ||i%400==0){
//sum=sum+366;
sum+=366;
}else{
sum+=365;
}
}
for(int i=1;i<month;i++){
if(i==2){
if(year%4==0 && year%100!=0 || year%400==0){
sum+=29;
}else{
sum+=28;
}
}else{
if(i==4||i==6||i==9||i==11){
sum+=30;
}else{
sum+=31;
}
}
}
sum+=1;
int wekday=sum%7;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1;i<=wekday;i++){
System.out.print("\t");
}
//判断润,平年
if(month==2){
if(year%4==0&&year%100!=0||year%400==0){
for(int i=1;i<=29;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}else{
for(int i=1;i<=28;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}
continue;
}
//判断大小月
if(month==4||month==6||month==9||month==11){
for(int i=1;i<=30;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}else{
for(int i=1;i<=31;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}

System.out.println("\n"+"按任意键+enter键继续查询");
System.out.println("退出请扣1");
int endNum =in.nextInt();
if(endNum==1){
break;
}
}
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值