1. 1 import java.util.Scanner;
  2. com.lv.calendarWatch//包名
  3. /*
  4. * 需求:输入一个年份和月份 ,显示当前月日情况 ,星期数要对应准确
  5. * 1.1900年1月1号开始
  6. * 2.星期 : 直接用总天数对7求余数
  7. * 3.以\t来个开
  8. */
  9. public class Demo9 {
  10.  
  11. /**
  12. * @param args
  13. */
  14. public static void main(String[] args) {
  15. // TODO Auto-generated method stub
  16.  
  17. Demo9 demo = new Demo9();
  18. Scanner keyInput =new Scanner(System.in);
  19. System.out.println("请输入你想要查的年");
  20. int key1 = keyInput.nextInt();
  21. System.out.println("请输入你想要查的月份");
  22. int key2 = keyInput.nextInt();
  23. demo.show(key1,key2);
  24.  
  25. }
  26.  
  27. //定义一个工具方法:判断平年还是闰年
  28. public boolean isLeapYear(int year){
  29.  
  30. if(year % 400 == 0 || (year % 4==0 && year % 100 != 0)){
  31.  
  32. return true;
  33. }
  34.  
  35. return false;
  36. }
  37.  
  38. //计算输入年份下,月份的总天数 1900
  39.  
  40. public int getTotalDateFrom(int year , int month){
  41.  
  42. //1.定年份的总天数
  43. int totalDate = 0;//1900到你输入的年份的总天数 2016 1900 - 1903 = 3
  44. for(int i= 1900 ; i < year ;i++){
  45.  
  46. if(isLeapYear(i)){ // 闰年
  47.  
  48. totalDate += 366;
  49. }else {
  50.  
  51. totalDate += 365;
  52. }
  53. }
  54.  
  55. //2.计算月份的天数
  56. for(int i = 1 ; i< month ;i++){
  57.  
  58. totalDate += getDayOfMonth(year, i);
  59. }
  60.  
  61. return totalDate;
  62.  
  63. }
  64.  
  65. public int getDayOfMonth(int year , int month){
  66.  
  67. switch (month) {
  68. case 1:
  69. case 3:
  70. case 5:
  71. case 7:
  72. case 8:
  73. case 10:
  74. case 12:
  75.  
  76. return 31;
  77.  
  78. case 4:
  79. case 6:
  80. case 9:
  81. case 11:
  82. return 30;
  83. case 2:
  84. if(isLeapYear(year)){
  85.  
  86. return 29;
  87. }else {
  88.  
  89. return 28;
  90. }
  91. default:
  92. return 30;
  93. }
  94. }
  95.  
  96. public int printSpace(int year , int month){
  97.  
  98. return getTotalDateFrom(year, month) % 7;
  99. }
  100.  
  101. public void print(int year , int month){
  102.  
  103. int countSpac = printSpace(year, month) + 1; // 空格的个数
  104. int count = 0; //定义一个计数
  105. for(int i = 1; i<=countSpac; i++){
  106. count++;
  107. System.out.print("\t");
  108. }
  109.  
  110. //2.打印日期
  111. for(int i = 1 ; i<=getDayOfMonth(year, month);i++){
  112.  
  113. if(count % 7 == 0){
  114.  
  115. System.out.println();
  116. }
  117. count++;
  118. System.out.print(i+"\t");
  119.  
  120. }
  121.  
  122. }
  123.  
  124. public void show(int year , int month){
  125.  
  126. System.out.println("******************"+year+"****"+month+"***************************");
  127. System.out.println("======================================================");
  128. System.out.println("日\t一\t二\t三\t四\t五\t六");
  129. System.out.println("======================================================");
  130. print(year, month);
  131. System.out.println();
  132. }
  133.  
  134. }

运行结果如下所示:

java中日历代码的实现的更多相关文章

  1. 【Java基础】2、Java中普通代码块,构造代码块,静态代码块区别及代码示例

    Java中普通代码块,构造代码块,静态代码块区别及代码示例.Java中普通代码块,构造代码块,静态代码块区别及代码示例 执行顺序:静态代码块>静态方法(main方法)>构造代码块>构 ...

  2. Java 中静态代码块初始化问题测试

    Java 中静态代码块初始化问题测试 原创 情况一:变量是 static final 修饰的"编译期常量",如 public static final String a = &qu ...

  3. Java中普通代码块,构造代码块,静态代码块区别及代码示例

    //执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 1 //普通代码块 ...

  4. Java中普通代码块,构造代码块,静态代码块执行顺序

    //执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 1 //普通代码块 ...

  5. (转)java中静态代码块的用法 static用法详解

    一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来 ...

  6. java中静态代码块的用法 static用法详解(转)

    (一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序 ...

  7. java中的代码块执行顺序

    /* 代码块:在Java中,使用{}括起来的代码被称为代码块. 根据其位置和声明的不同,可以分为 局部代码块:局部位置,用于限定变量的生命周期. 构造代码块:在类中的成员位置,用{}括起来的代码.每次 ...

  8. 关于java中普通代码块、构造代码块与静态代码块

    1.普通代码块 public static void main(String[] args) { /*普通代码块: *直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块. *普通 ...

  9. 【转】java中静态代码块的用法 static用法详解

    原文网址:http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html (一)java 静态代码块 静态方法区别一般情况下,如 ...

随机推荐

  1. jqgrid在colModel中多次调用同一个字段值

    Debug: 代码1: { name : 'input', index : 'input', width : 100, align : "center", formatter : ...

  2. BZOJ4546(原) : 三元组

    设$f(x)=\sum_{x|d}p(d)$. 则$ans=\sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^n\mu(i)\mu(j)\mu(k)f(lcm(i,j))f(lcm ...

  3. mapreduce.framework.name

    mapreduce.framework.name默认是local: <property><name>mapreduce.framework.name</name>& ...

  4. [转] linux 下查看一个进程运行路径的方法

    http://blog.csdn.net/brioxu/article/details/5104736 在linux下查看进程大家都会想到用 ps -ef|grep XXX ps -aux | hea ...

  5. Codeforces Round #235 (Div. 2)C、Team

    #include <iostream> #include <algorithm> using namespace std; int main(){ int n,m; cin & ...

  6. 读取和写入 文件 (NSFIleManger 与 NSFileHandle)

    读取和写入 文件 //传递文件路径方法 -(id)initPath:(NSString *)srcPath targetPath:(NSString *)targetPath { self = [su ...

  7. 51Nod 1136 欧拉函数 Label:数论

    对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi( ...

  8. BZOJ 1087 题解【状压DP】

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3112  Solved: 1816[Submit][ ...

  9. IOS 网络请求方式

    iOS开发中的网络请求   今天来说说关于iOS开发过程中的网络请求. 关于网络请求的重要性我想不用多说了吧.对于移动客户端来说,网络的重要性不言而喻.常见的网络请求有同步GET, 同步POST, 异 ...

  10. xcode 忽然无法真机调试

    手机升级了系统后一直没有再进行真机调试,今天要去面试把手机插上后忽然显示iPhone(unavailable),选中自己的设备后运行发现弹出警告could not find developer dis ...