【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;
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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