Java小项目之日历的制作,原理详解+代码演示
yuyutoo 2024-10-17 17:03 1 浏览 0 评论
用Java语言仿制作一个简易日历,包括基本的日历感觉,没有使用GUI,所以看起来不是很好看,这里主要演示一下日历的基本原理,就不要好看了,开发工具用eclipse,好了话不多说直接开始了。
首先,我们先来解决一个问题就是某年某月某日是星期几?这有好多方法,我就举一个方法吧,就是求某年某月某日到1900年1月1日有多少天,之后在对7取余,余几就表示星期几(余数为0表示星期天),那么下面我们就有这个方法求一下今天是星期几?演示代码如下。
注意:闰年是能整除4,不能整除100,或者能整除400,且要知道闰年的二月是29天。如果这个不知道是没法算的,下面演示结果
那么解决好某月某天是星期几之后,就可以了进行下一步了,首先看一下我们电脑上的日历是一个什么样的效果,以便我们来模仿做一个简单的。
根据图分析一下,可以看出最上面的一排为(日一二三四五六),一输出的那天是星期六,下面就换行了输出了,日历且是从1号开始输出的,所以我们要用上面的方法算出1号是星期几,然后逐渐输出,一到当天是星期六就换行输出就可以了。
首先解释一下变量都是什么意思year是年份,month是月份,zongtianshu是某年某月1日到1900年1月1日的总天数,xingqi就是当前星期几,sum是计算总天数的方法,daysum是计算当前月有多少天的方法。下面我们运行一下这个程序,看一下这个月的日历。
大家可以看出这个和这个月的日历是一样的,就是做的好难看,但他的原理是都演示出来了。下附全部代码。
import java.util.Scanner;
public class Calendar3 {
public static void main(String args[]){
Scanner s=new Scanner(System.in);
System.out.println("请输入年份");
int year=s.nextInt();
System.out.println("请输入月份");
int month=s.nextInt();
int zongtianshu=sum(year,month);
int xingqi=zongtianshu%7;//计算某年某月某日是星期几的方法
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=0;i<xingqi;i++){
System.out.print("\t");
}
int tianshu=Daysum(year,month);
for(int i=1;i<=tianshu;i++){
if(zongtianshu%7==6){//表示星期六
System.out.println(i);
}else{
System.out.print(i+"\t");
}
zongtianshu++;//总天数加1,直到加满整个月
}
}
public static int sum(int year,int month){
int sum = 0;//总天数
for(int i=1990;i<year;i++){
if(i%4==0&&i%100!=0||i%400==0){
sum=sum+36;
} else{
sum=sum+365;
}
}
for(int i=1;i<month;i++){
/ /判断今年是不是闰年
if(i==2){//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;
return sum;//输出0就代表周日
}
public static int Daysum(int year,int month){//哪年哪月共有多少天
if(month==2){
if(year%4==0&&year%100!=0||year%400==0){
return 29;
}
else{
//不是闰年2月应该有28天
return 28;
}
}
else if(month==4||month==6||month==9||month==11){
return 30;
}
else{
return 31;
}
}
}
本人菜鸟,还在学习编程,如果文章中有错误,希望您能指出,您的指导是我前进的动力,欢迎评论,欢迎收藏吗,欢迎转发,欢迎关注头条号:趣IT科技。
相关推荐
- 基于ThinkPHP5+AdminLTE的后台管理系统
-
基于ThinkPHP5+AdminLTE的后台管理系统安装步骤clone项目到本地gitclonehttps://github.com/yupoxiong/BearAdmin.git或git...
- ThinkPHP5 使用迅搜 (XunSearch) 实现全文检索的安装以及使用教程
-
近期有朋友说应用的数据库数据过多,使用mysql原生的查询很慢,问有没有解决的方式,于是就有了这一篇记录文。讯搜(XunSearch)可以帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜...
- ThinkPHP5.1+Swoole实现的开源内容管理框架
-
一款支持Swoole的开源内容管理框架,基于ThinkPHP5.1开发,同时支持PHP-FPM和Swoole双模式,让WEB开发更快!主要特性更改框架协议为MIT,让你更自由地飞基于ThinkPHP...
- 「漏洞分析」ThinkPHP5任意代码执行分析全记录
-
一、前言ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的轻量级PHP开发框架,具有免费开源、快速、简单且面向对象等特点。在ThinkPHP的5.*版本中存在安全隐患,由于Thin...
- Thinkphp5使用之基础篇(thinkphp5.0)
-
thinkphp框架的使用方法基本都差不多,这里以tp5来进行说明。运行环境:win7,apache2.4,php7,这里当作所有的配置均已经完成,框架可以正常运行。解压缩thinkphp5的压...
- ThinkPHP5.0入门实例教程 中文pdf高清版
-
ThinkPHP5.0入门实例教程是一套关于ThinkPHP学习免费教材,介绍了thinkphp知识,及开发实例等。需要的朋友下载试试吧!需要的朋友关注后私信我,大量优质电子资料分享!关注我,为你提供...
- jQuery VS AngularJS 你更钟爱哪个?
-
在这一次的Web开发教程中,我会尽力解答有关于jQuery和AngularJS的两个非常常见的问题,即jQuery和AngularJS之间的区别是什么?也就是说jQueryVSAngularJS?...
- Jquery实时校验,指定长度的「负小数」,小数位未满末尾补0
-
在可以输入【负小数】的输入框获取到焦点时,移除千位分隔符,在输入数据时,实时校验输入内容是否正确,失去焦点后,添加千位分隔符格式化数字。同时小数位未满时末尾补0。HTML代码...
- 如何在pbootCMS前台调用自定义表单?pbootCMS自定义调用代码示例
-
要在pbootCMS前台调用自定义表单,您需要在后台创建表单并为其添加字段,然后在前台模板文件中添加相关代码,如提交按钮和表单验证代码。您还可以自定义表单数据的存储位置、添加文件上传字段、日期选择器、...
- 编程技巧:Jquery实时验证,指定长度的「负小数」
-
为了保障【负小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【负小数】的方法。HTML代码<inputtype="text"class="forc...
- 一篇文章带你用jquery mobile设计颜色拾取器
-
【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...
- 编程技巧:Jquery实时验证,指定长度的「正小数」
-
为了保障【正小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【正小数】的方法。HTML做成方法<inputtype="text"class="fo...
- jquery.validate检查数组全部验证
-
问题:html中有多个name[],每个参数都要进行验证是否为空,这个时候直接用required:true话,不能全部验证,只要这个数组中有一个有值就可以通过的。解决方法使用addmethod...
- Vue进阶(幺叁肆):npm查看包版本信息
-
第一种方式npmviewjqueryversions这种方式可以查看npm服务器上所有的...
- layui中使用lay-verify进行条件校验
-
一、layui的校验很简单,主要有以下步骤:1.在form表单内加上class="layui-form"2.在提交按钮上加上lay-submit3.在想要校验的标签,加上lay-...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 基于ThinkPHP5+AdminLTE的后台管理系统
- ThinkPHP5 使用迅搜 (XunSearch) 实现全文检索的安装以及使用教程
- ThinkPHP5.1+Swoole实现的开源内容管理框架
- 「漏洞分析」ThinkPHP5任意代码执行分析全记录
- Thinkphp5使用之基础篇(thinkphp5.0)
- ThinkPHP5.0入门实例教程 中文pdf高清版
- jQuery VS AngularJS 你更钟爱哪个?
- Jquery实时校验,指定长度的「负小数」,小数位未满末尾补0
- 如何在pbootCMS前台调用自定义表单?pbootCMS自定义调用代码示例
- 编程技巧:Jquery实时验证,指定长度的「负小数」
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)