代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
计算从2000年1月1日到输入的那一天有多少天
作者:
智祺
/ 发布于
2018/5/9
/
917
这道题主要是算明白从2000年1月1日到输入的那一天有多少天,这里面主要是要考虑到是否是闰年,闰年的二月是29天,非闰年的二月是28天,需要考虑输入的的年份到2000有多少年,有多少年是闰年,需要考虑输入的月份是否大于二月份,如果大于二月份就需要考虑这一年是否是闰年,2月份应该是28天还是29天.
import java.util.Scanner; class hello{ static int A=7*31+5*30-1;//是闰年,一年的天数 static int B=7*31+5*30-2;//不是闰年,一年的天数 static int daynum=0;//总的天数 static int dayNumYear=0;//整年的天数 static int dayNummouth=0;//不满一年的整月的天数 public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.println("请输入年份:"); int year=sc.nextInt(); System.out.println("请输入月份:"); int mouth=sc.nextInt(); System.out.println("请输入号数:"); int day=sc.nextInt();//不满一月的天数 if(inputJudge(year,mouth,day)==0) return; daynum=yearDayNum(year)+mouthDayNum(year,mouth,day)+day;//总的天数=整年的天数+整月的天数+day if(daynum%5>0&&daynum%5<4) System.out.println("这一天,这个人在打渔");//天数模5后,大于0且小于4,则,打渔 else System.out.println("这一天,这个人在晒网"); } public static int yearDayNum(int year){//整年的总天数 for(int i=2001;i<year;i++){//算的是输入的年份的前一年 if(isRYear(i)){ dayNumYear+=A; }else{ dayNumYear+=B; } } return dayNumYear; } public static int mouthDayNum(int year,int mouth,int day){//整数月的总天数 if(mouth%2==0){ //当mouth为整数月时 if(mouth==2){//当mouth为2时 dayNummouth=((mouth-1)/2+1)*31+((mouth-1)/2)*30; }else if(mouth>2){//当mouth大于2时,需要判断这一年是否闰年 if(isRYear(year)){ dayNummouth=((mouth-1)/2+1)*31+((mouth-1)/2)*30-1;//是闰年 }else{ dayNummouth=((mouth-1)/2+1)*31+((mouth-1)/2)*30-2;//不是闰年 } } } else if(mouth%2==1){//当mouth为奇数月时 if(mouth==1){//当mouth为1时 dayNummouth=0; } if(mouth>2&&mouth<8){ //当mouth为奇数月,且mouth小于8大于2时,需要判断这一年是否是闰年,以决定后面是减一天还是减两天 if(isRYear(year)){//是闰年,减一天,2月有29天 dayNummouth=((mouth-1)/2)*31+((mouth-1)/2)*30+-1; } else{//不是闰年,减两天,2月有28天 dayNummouth=((mouth-1)/2)*31+((mouth-1)/2)*30+-2; } } else if(mouth>8){//当mouth为奇数月,且mouth大于8时,也需要判断这一年是否是闰年 if(isRYear(year)){//是闰年,减一天 dayNummouth=((mouth-1)/2+1)*31+((mouth-1)/2-1)*30+-1; } else{//不是闰年,减两天 dayNummouth=((mouth-1)/2+1)*31+((mouth-1)/2-1)*30+-2; } } } return dayNummouth; } public static boolean isRYear(int year){//判断年份是否是闰年 if((year%4==0&&year%100!=0)||(year%100==0&&year%400==0)) return true; else return false; } public static int inputJudge(int year,int mouth,int day){//判断输入是否合法 if(year<2001){ System.out.println("年份输入有误"); return 0; } if(mouth<1||mouth>12){ System.out.println("月份输入有误"); return 0; } if((mouth==1||mouth==3||mouth==5||mouth==7||mouth==8||mouth==10||mouth==12)&&(day<0||day>31)){ System.out.println("天数输入有误"); return 0; } if((mouth==2)&&isRYear(year)&&(day<0||day>29)){ System.out.println("天数输入有误"); return 0; } if((mouth==2)&&(!isRYear(year))&&(day<0||day>28)){ System.out.println("天数输入有误"); return 0; } if((mouth==4||mouth==6||mouth==9||mouth==11)&&(day<0||day>30)){ System.out.println("天数输入有误"); return 0; } return 1; } }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
智祺
贡献的其它代码
(
11
)
.
扫描主机端口状态
.
计算从2000年1月1日到输入的那一天有多少天
.
查CPU使用率比较高的线程小脚本
.
提供字符串中的字母,并形成数列
.
ICSharpCode.SharpZipLib.rar
.
双色球机选
.
copy指定文件到远程主机指定目录
.
img的src不连接本地地址实现输出一个图片(使用base64
.
任何使用has()来检查某个元素是否包含某个类或是元素
.
使用极光推送信息到APP
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3