之前已经跟着老师做过一次这个日历,但是时间一久便又拿出来自己再复习一遍。果然不出所料,已经做不出来了,而且因为在学习的时候使用的是Myeclipse,其中话中操作是由软件自己操作的,每写出一句代码软件也会自动提示哪里有问题,半傻瓜式的操作果然是没有什么好的效果。这次自己用Editplus写,连编译都无法通过,实在是学艺不精,操练不够啊!在此自己给自己定下一个要求,简单的程序在没有达到一次编译通过的水平前,只允许自己使用Editplus写代码,以提高书写及基本逻的正确性与准确度。

总结来说常犯的低级错误有如下:​

1. 写方法的时候忘记加(),尤其是在写构造方法的时候,需要留意代码的完整性​
2. {}没有配套,虽然这个只是个书写问题,但是也是需要留意的问题​
3.  使用Scanner new 对象的时候忘记在()里面加System.in
4. 写使用对象引用方法的时候常常忘记加()

总结的经验和收获如下:

 1. 谨记在条件语句中使用键盘输入的禁忌,一定不能直接在条件语句中使用键盘输入,一定要将键盘输入赋值给一个变量,将这个变更代入到条件语句中,否则将不停地输入,使程序无法继续进行2. 当需要进行循环时不知道什么需要需要跳出(可能是视用户情况来决定,例如用户输入),可以尝试先boolean一个变量为true,当循环进入尾声时,需要用户输入选择是否继续循环,此时可以按需要当boolean变量的值改为true或false,这样就可以跳出循环3. 使用try catch来提示用户输入错误类型的值,例如String A = in.next();但是如果用户输入了一个int型的值,那么可以用try catch来提示用户输入有误4. 结束循环可以用continue或break,但是他们是不同的,continue是跳出本次循环,break是直接结束循环语句5. 当一个对象不再使用的时候可以当其设置为null,这个JAVA会自动将内存回收6. 注意&&与||的顺序,如果顺序不同,那么他们的逻辑也不同,结果也将会不同7. 设置方法的时候如何确定是否需要返回?如果需要在其他类与其他方法里面获得一个值,那么就需要用返回。那么返回的是什么呢,return的是什么就返回什么。(对于return的理解感觉还不够到位,后续还需要请教或继续观察这个问题)8. 封装的操作有待加强

如下是本次完成的代码,目前来看还算比较满意,留在此作将来的回顾,如果将来发现这个代码还有问题再来作更新

程序分为两个类,一个是Cal,作为日历本身这个类,还有一个是主程序Calendar

//Cal类
class Cal
{Cal(){System.out.println("\n\t欢迎使用日历查询系统!\n");}private int year;private int month;private int sum;public void setYear(int year){this.year = year;}public int getYear(){return year;}public void setMonth(int month){this.month = month;}public int getMonth(){return month;}public void setSum(int sum){this.sum = sum;}public int getSum(){return sum;}public void getDays(int year,int month){this.setSum(0);for (int i = 1900;i<year ;i++ ){if (i%4==0&&i%100!=0||i%400==0) //注意&&与||的顺序,如果顺序不同,那么他们的逻辑也不同,结果也将会不同{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; // 自加1是为了自动跳到下一个月的第一天(因为上面的for循环中是<month,不是<=month)}public int getWeekNum(){int W = this.getSum()%7;return W;}public void prepare(){System.out.println("一\t二\t三\t四\t五\t六\t日");if (this.getWeekNum()==0){System.out.print("\t\t\t\t\t\t");}else{for (int i=1;i<this.getWeekNum() ;i++ ){System.out.print("\t");}}}public void outPut(int year,int month){if (month==2){if (year%4==0&&year%100!=0||year%400==0){for (int i = 1;i<=29 ;i++ ){if (this.getWeekNum()!=0){System.out.print(i+"\t");}else{System.out.print(i+"\n");}sum++;}}else{for (int i = 1;i<=28 ;i++ ){if (this.getWeekNum()!=0){System.out.print(i+"\t");}else{System.out.print(i+"\n");}sum++;}}}else{if (month == 4||month == 6||month == 9||month == 11){for (int i = 1;i<=30 ;i++ ){if (this.getWeekNum()!=0){System.out.print(i+"\t");}else{System.out.print(i+"\n");}sum++;}}else{for (int i = 1;i<=31 ;i++ ){if (this.getWeekNum()!=0){System.out.print(i+"\t");}else{System.out.print(i+"\n");}sum++;}}}}
}
//主程序
import java.util.Scanner;
public class Calendar
{public static void main(String[] args) {Scanner in = new Scanner(System.in);boolean circle = true;while(circle) {Cal C = new Cal();System.out.println("请输入需要查询的年份:");C.setYear(in.nextInt());System.out.println("请输入需要查询的月份:");C.setMonth(in.nextInt());C.getDays(C.getYear(),C.getMonth()); //计算SUM求得总天数;System.out.println(C.getSum()); // 输出总日期时间;System.out.println(C.getWeekNum()); // 计算W的值,确定输入月份的1号是星期几;C.prepare(); //输出日历框架;//System.out.println(C.prepare()); // 计算W的值,确定输入月份的1号是星期几;C.outPut(C.getYear(),C.getMonth()); // 输出日历详细C = null;while(circle) //小循环系统,确认是否继续查询{System.out.println("\n\n是否继续查询Y/N:");try // try catch 语句,用于提示错误的输入类型{/* * 非常重要!!!!!!!!!!!!!!!!!!!!* 谨记在条件语句中使用键盘输入的禁忌,一定不能直接在条件语句中使用键盘输入,* 一定要将键盘输入赋值给一个变量,将这个变更代入到条件语句中,否则将不停地输入*/String continu = in.next(); if (continu.equals("Y")||continu.equals("y")){break; //结束这个循环(continue是跳出这一次循环,注意区别)}else{if (continu.equals("N")||continu.equals("n")){System.out.println("退出系统");circle = false; // 将circle赋为false 就等于是从源头上结束循环语句}else{System.out.println("输入有误,请重新输入!");}}}catch (Exception e){System.out.println("输入有误"); //如果有输入错误类型的情况,将提示输入错误}}}}
}

Java 日历的制作 心得 写给自己相关推荐

  1. Java日历的制作(输入年月输出日历表)

    package com.unit2.test; import java.util.Scanner; /** 输入年月,将输出出日历表(从1900.1.1开始计算总天数)*/ public class ...

  2. java 制作简易日历_Java制作简单日历

    1.用for循环.switch 以1990.01.01作为参考 public class Demo_9 { public static void main(String[] args) { Scann ...

  3. Java标准简历制作

    xxx 性别:男 年龄:xx 工作经验:三年 电话:xxxxxx 现居住地:南京市 邮箱:xxxxxx 自我介绍:我叫xxx,来自河南,从业有xx年之前在xx家公司,做过的项目xxx,最近在研究的技术 ...

  4. 常用的6款Java开源报表制作工具

    本文为大家推荐6款常用的Java开源报表制作工具,供开发者学习.参考. 1.Aspose.Cells for JasperReports 一个基于Java的开源报表工具,它可以在Java环境下像其他I ...

  5. 201671010117 2016-2017-2 《Java程序设计》Java第二周学习心得

    Java第二周学习心得 这一周老师在周四进行了课堂测验,完全出乎我的意料,我以为老师会在前两周上课讲一下,由于我在课前没有好好准备,反转课堂来的有的措手不及,那些题很多很多都不会,也错了很多,班上有很 ...

  6. 基于jQuery日历插件制作日历

    这篇文章主要介绍了基于jQuery日历插件制作日历的相关资料,需要的朋友可以参考下 来看下最终效果图吧: 是长得丑了一点,不要吐槽我-.- 首先来说说这个日历主要的制作逻辑吧: ·一个月份最多有31天 ...

  7. Docker Java程序镜像制作

    Docker Java程序镜像制作 制作前的准备 jre:不需要完整的jdk,jre即可,到Oracle进行下载即可,下载链接,根据自己的情况进行选择,这里选择jre-8u221-linux-x64. ...

  8. java实验2总结心得,java实验的心得体会

    java实验的心得体会 java实验心得体会篇一:java实验总结 1. 设计一个Person类,包含:姓名,年龄,性别.要求:该类至多只能创建一男.一女两个对象! 2. 设计一个测试类Test,创建 ...

  9. java实验2总结心得,打字小游戏JAVA实验总结及心得体会

    篇一:扫雷游戏实验报告 课程设计 班 级: 姓 名: 学 号: 指导教师: 成 绩: 电子与信息工程学院信息与通信工程系 目录 1.任务概述------------------------------ ...

最新文章

  1. 从代码设计到应用开发,入坑深度学习看这本书就够了
  2. 面试Android实习生
  3. 网络安全 — 安全架构
  4. Android安全研究经验谈
  5. lisp读写cass属性_130507Auto Lisp在CASS图形要素规范化中的应用
  6. h5 rtmp推荐控件_H5播放Rtmp之videojs播放
  7. java 压缩汉字字节_java中计算汉字的字节数
  8. 时结果 hive_Hive优化
  9. 百度地图标点点击变色_《和平精英》版本爆料第三弹:雪地洞穴开启!组队标点功能升级~...
  10. Oracle利用序列实现自动增长列
  11. PostgreSQL数据库安装Version10.5
  12. 补习系列(5)-springboot- restful应用
  13. 数据分析工具具备什么功能
  14. html中span隐藏属性,JS 如果改变span标签的是否隐藏属性
  15. 智能汽车路径规划-曲线插值法、人工势场法
  16. 下载xcode 6 beta.dmg
  17. 8080 端口被占用的解决方法 netstat -ano;taskkill (命令行)
  18. IIS SSL客户端证书(忽略/接受/必须)之三——思考验证(3)
  19. c--scanf()函数详解
  20. 天融信防火墙重置配置_天融信防火墙认证配置

热门文章

  1. AISG2.0 协议(一)——基础概念
  2. 火绒规则 禁止所有软件的安装_火绒阻止流氓全家桶规则
  3. qt调试android程序崩溃,使用qt5开发的Android应用程序合并了AWS C++库崩溃
  4. 微软官方win10系统安装u盘启动盘制作
  5. 使用Python,OpenCV进行银行支票数字和符号的OCR
  6. Dell E515dn 驱动
  7. [Vue warn]: Missing required prop: value
  8. 【转载】利用ArcGIS Engine 二次开发的使用和总结
  9. ELK日志分析平台的搭建
  10. 【转载】论文写作总结(N个SCI期刊主编写作论文之精华汇集)