【JAVA 课程设计 之 万年历】「建议收藏」

距离2017年还有30多个小时~转眼间2016只剩一个尾巴了,大学生活也过了快一半了,自己却依旧那么笨手笨脚,不会的知识永远那么多,该看的书永远没机会去看,2017愿一切如昨天抽的签:远方不一定有诗,但有更好的自己~明天你好,请多关照~2017希望我的家人们,小伙伴们,以及所有帮助过我的朋友们都能健健康康,万事如意~Java课设远没有自己想的难,万年历,不用做显示面~也算2016JAVA的最后一

大家好,又见面了,我是你们的朋友全栈君。

万年历:输入要查看的年份,输出该年份的日历

实现代码:

package CJF;

import java.util.*;

public class ks {

	public static void main(String[] args) {
          int x = 3,n,m,y,r,k;
          System.out.println("******您好,2016年华人款万年历,枫枫为您服务******");
          System.out.println("**********************请输入查找年份********");
          System.out.println();
          Scanner input = new Scanner(System.in);
          n = input.nextInt(); 
          int cut = 365 * 3 + 366;
          if(n >= 1997){
        	  m = n - 1997;
        	  int a = m / 4;
        	  int b = m % 4;
        	  x = (x + cut * a + b * 365) % 7;
          }
          else{
        	  m = 1996 - n;
        	  x =(366 - x + 2) % 7; // 先转换为1996年为基准年份
        	  int a = m / 4;
        	  int b = m % 4;
        	  cut = (cut * a + b * 365) % 7;
        	  x = (x - cut + 7) % 7; 

          }
          if(x == 0) x = 7;
          for(y = 1 ; y <= 12 ; y++){
            	  if(y == 1 || y == 3 || y == 5 || y == 7 || y == 8 || y == 10 || y == 12)
            		  k = 31;
            	  else if(y == 2){
            		  if(n % 400 == 0 || (n % 4 == 0 && n % 100 != 0))
            			  k = 29;
            		  else 
            			  k = 28;
            	  }
            	  else
            		  k = 30;
            	  System.out.println();
            	  System.out.println("********** " + n + " 年  " + y + " 月  " + "**********");
            	  System.out.println("Mon  Tue  Wen  Thu  Fri  Sat  Sun");
            	  for(int i = 1 ; i < x ; i++)
            		  System.out.print("     ");
            	  for(r = 1; r <= k; r++,x++){
            		  if(r <= 9)
            		      System.out.print(r + "    ");
            		  else
            			  System.out.print(r + "   ");
            		  if(x % 7 == 0){
            			  System.out.println();
            		      x = 0;
            		  }
            	  }
            	  System.out.println();
              }
          System.out.println("******本次服务到处结束,枫枫期待与您的下次会面******");
          }
	}

对JAVA来讲一个main方法写下了总感觉不太合适,把代码格式稍微改下层次和结构更清晰了点~

实现代码:

package CJF;

import java.util.*;

public class ks {

    public static void main(String[] args) {
          System.out.println("******您好,2016年华人款万年历,枫枫为您服务******");
          System.out.println("**********************请输入查找年份********");
          System.out.println();
          Scanner input = new Scanner(System.in);
          int n = input.nextInt(); 
          int x = Nf(n); // 确认该年第一天是星期几
          if(x == 0) x = 7;
          for(int y = 1 ; y <= 12 ; y++){
              int k = Yf(n,y); // 判断该年该月有多少天
                  System.out.println();
                  System.out.println("********** " + n + " 年  " + y + " 月  " + "**********");
                  System.out.println("Mon  Tue  Wen  Thu  Fri  Sat  Sun");
                  x = R(x,k); // 调整日的输出格式
              }
          System.out.println("******本次服务到处结束,枫枫期待与您的下次会面******");
    }
    public static int Nf(int n){ // 确认该年第一天是星期几
        int m,x = 3;
        int cut = 365 * 3 + 366;
        if(n >= 1997){
            m = n - 1997;
            int a = m / 4;
            int b = m % 4;
            x = (x + cut * a + b * 365) % 7;
        }
        else{
            m = 1996 - n;
            x =(366 - x + 2) % 7; // 先转换为1996年为基准年份
            int a = m / 4;
            int b = m % 4;
            cut = (cut * a + b * 365) % 7;
            x = (x - cut + 7) % 7; 
        }
        return x;
    }
    public static int Yf(int n,int y){ // 判断该年该月有多少天
        int k = 0;
            if(y == 1 || y == 3 || y == 5 || y == 7 || y == 8 || y == 10 || y == 12)
                k = 31;
            else if(y == 2){
                if(n % 400 == 0 || (n % 4 == 0 && n % 100 != 0))
                    k = 29;
                else 
                    k = 28;
            }
            else
                k = 30;
        return k;
    }
    public static int R(int x,int k){ // 调整日的输出格式
        for(int i = 1 ; i < x ; i++)
            System.out.print("     ");
        for(int r = 1; r <= k; r++,x++){
            if(r <= 9)
                System.out.print(r + "    ");
            else
                System.out.print(r + "   ");
            if(x % 7 == 0){
                System.out.println();
                x = 0;
            }
        }
        System.out.println();
        if(x == 0) x = 7;
        return x;
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127925.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • document.all用法(一)

    document.all用法(一)1、理解document.all[]  从IE4开始IE的objectmodel才增加了document.all[],来看看document.all[]的Description:ArrayofallHTMLtagsinthedocument.Collectionofallelementscontainedbytheobject.  也就是说document.all

    2022年7月12日
    17
  • ALSA的pulse插件_pulseaudio启动

    ALSA的pulse插件_pulseaudio启动此博文为记录我初次进行树莓派开发语音唤醒时遇到的问题以及解决方法,如果有更好的方法,欢迎讨论。问题一描述:我在进行snowboy的安装过程中,所有的程序能够正常运行,也能正常录音以及音频输出,但是树莓派重启后,我运行之前设置好的程序,程序依然能够运行,但不能进行正常的唤醒。我查了/.asoundrc没有问题,录音设备和音频输出设备也是正常的状态,在系统中也能列出。问题一解决:经过多次重装系统(因为我的树莓派不只是只有做语音唤醒,我一开始也不知道是哪里的问题)的排除,发现是树莓派重启之后pulseau

    2022年10月16日
    0
  • CAN总线学习笔记(3)- CAN协议错误帧

    CAN总线学习笔记(3)- CAN协议错误帧依照瑞萨公司的《CAN入门书》的组织思路来学习CAN通信的相关知识,并结合网上相关资料以及学习过程中的领悟整理成笔记。好记性不如烂笔头,加油!1错误帧的帧结构在发送和接收报文时,总线上的节点如果检测出了错误,那么该节点就会发送错误帧,通知总线上的节点,自己出错了。错误帧由错误标志和错误界定符两个部分组成。主动错误标志:6个连续的显性位;被动错误标志:6个连续的隐性位;…

    2022年6月28日
    44
  • tkMapper插件的详细讲解[通俗易懂]

    tkMapper插件的详细讲解[通俗易懂]tkMapper插件的详细讲解一、tkMapper简介tkMapper就是一个MyBatis插件,是在MyBatis的基础上提供的开发工具,可以让开发变得简单,提高开发效率。作用:1、提供了针对单表通用的数据库操作方法2、逆向工程(根据数据表生成实体类、dao接口、映射文件)二、tkMapper整合1、基于SpringBoot完成MyBatis的整合2、整合tkMapper2.1、添加tkMapper的依赖2.2、修改启动类的@MapperScan注解的包为***tk.mybatis.spring.anno

    2022年10月7日
    0
  • 解决Deepin下qq无法显示图片「建议收藏」

    解决Deepin下qq无法显示图片「建议收藏」添加内核参数彻底禁用IPv6:执行:sudodedit/etc/default/grub开始编辑文件:在此行添加参数:GRUB_CMDLINE_LINUX=”ipv6.disable=1″保存退出后执行:sudoupdate-grub执行完命令之后,重新启动系统。亲测:可以接收图片…

    2022年8月10日
    3
  • python执行测试用例_平台测试用例

    python执行测试用例_平台测试用例前言通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果。pytest默认运行用例的顺序是按模块和用例命名的ASCII编码

    2022年7月28日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号