/** 从键盘输入一个日期,格式为yyyy-M-d要求计算该日期与1949年10月1日距离多少天例如:用户输入了:1949-10-2程序输出:1用户输入了:1949-11-1程序输出:31
*/
import java.util.Arrays;
import java.util.Scanner;
public class Demo09 {static int[][] days = {   // 定义平年days[0]和闰年days[1]{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};// 字符串转换 整数public static int[] conversion(String s) {String[] ss = s.split("\\-");int[] t = new int[3];t[0] = Integer.parseInt(ss[0]);t[1] = Integer.parseInt(ss[1]);t[2] = Integer.parseInt(ss[2]);return t;}// 计算任意一年内的总天数 (是365还是366)public static int calcDay(int y,int m,int d){int sum = d;  // 每一年的总天数 (初始化为最后一个月的天数)int i = 0;        // 平年下标为 0if((y%4==0&&y%100!=0)||(y%400==0)) i = 1; // 闰年下标为 1for(int j=0;j<m;j++){sum += days[i][j];}return sum;}// 判断是否交换输入的两个日期 (日期小者放前)public static void isSwap(int[] o,int[] n){if(o[0]>n[0]){   // 日期内容交换for(int i=0;i<o.length;i++){int t = o[i];o[i] = n[i];n[i] = t;}}}// 输出public static String p(int[] s){StringBuffer sb = new StringBuffer();for(int i=0;i<s.length-1;i++){sb.append(s[i]+"-");}sb.append(s[s.length-1]);return sb.toString();}// 计算总天数public static int calc(int[] o, int[] n) {int sum;if(n[0]==o[0]){    // 如果年份相等,侧直接计算天数sum = calcDay(n[0],n[1],n[2])-calcDay(o[0],o[1],o[2]);    // 大的日期天数-小的日期天数}else{sum = calcDay(o[0],12,31)-calcDay(o[0],o[1],o[2]);   // 得到第一年日期到下一年开始的天数for(int i=o[0]+1;i<n[0];i++){ // 中间的每年天数 (不包含第一年和最后一年)sum += calcDay(i,12,31);}sum += calcDay(n[0],n[1],n[2]);    // 加上最后一年的天数}return sum;}public static void main(String[] args){
//      int[] o = conversion("1949-10-2");Scanner scan = new Scanner(System.in);System.out.print("输入日期格式为:(1949-10-2)\n输入第一个日期:");int[] o = conversion(scan.nextLine());System.out.print("输入第二个日期:");int[] n = conversion(scan.nextLine());int sum = 0;  // 总和isSwap(o,n);   // 如果o日期小于n日期,侧交换sum = calc(o, n); // 计算总天数System.out.println(p(o)+" 到 "+p(n)+"\n距离"+sum+"天");}
}

运行结果:

输入日期格式为:(1949-10-2)
输入第一个日期:1949-10-2
输入第二个日期:1949-11-2
1949-10-2 到 1949-11-2
距离31天

从键盘输入一个日期,格式为yyyy-M-d 要求计算该日期与1949年10月1日距离多少天相关推荐

  1. oracle--day2(单值函数(字符函数,日期函数,转换函数,数字函数),日期格式(yyyy,mm等含义),表示一个日期数据的4种方式,多表查询(连接查询(等值连接,不等值连接,外连接,自连接))

    第三章:单值函数     函数分为:       1.单值函数           1.字符函数           2.日期函数           3.转换函数           4.数字函数 ...

  2. m行n列最大值和最小值C语言,找数组最值 按如下函数原型编程从键盘输入一个m行n列的二维数...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 找数组最值 按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值.其中,m和n的值由用户键盘输入.已知m和n ...

  3. 从键盘输入一个英文字母,如果它是大写英文字母,则将其转换为小写英文字母,如果它是小写英文字母,则将其转换为大写英文字母,然后将它及其ASCII码值显示到屏幕上,如果不是英文字母,则不转换直接输出到屏幕

    从键盘输入一个英文字母,如果它是大写英文字母,则将其转换为小写英文字母,如果它是小写英文字母,则将其转换为大写英文字母,然后将它及其ASCII码值显示到屏幕上,如果不是英文字母,则不转换直接输出到屏幕 ...

  4. 按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中,m和n的值由用户键盘输入。已知m和n的值都不超过10。

    题目:按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值.其中,m和n的值由用户键盘输入.已知m和n的值都不超过10. void InputArray( ...

  5. 从键盘输入一个年份和月份,输出该月有多少天(考虑闰年, 闰年的条件是:(1)能被4整除,并且不能被100整除;(2)能被400整除)。

    从键盘输入一个年份和月份,输出该月有多少天(考虑闰年, 闰年的条件是:(1)能被4整除,并且不能被100整除:(2)能被400整除). (提示:月份不在1-12都要输出"Input erro ...

  6. 7-1 给出成绩等级 (6 分)编写一程序实现以下功能从键盘输入一个一百分制成绩,如果不在0~100范围内,则要求重新输入数据,直到输入的数据在0~100范围内。将输入的数据转换成等级‘A’

    7-1 给出成绩等级 (6 分) 编写一程序实现以下功能 从键盘输入一个一百分制成绩,如果不在0-100范围内,则要求重新输入数据,直到输入的数据在0-100范围内. 将输入的数据转换成等级'A',' ...

  7. C语言 编写程序:由键盘输入一个字符判断是字母数字还是其他符号。

    c语言程序题 编写程序:由键盘输入一个字符判断是字母数字还是其他符号. #include<stdio.h> void main() {char a;scanf("%c" ...

  8. C语言学习之从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)

    从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分).要求在输入数据后先对其进行检查是否为小于1000 的正数.若不是,则要求重新输人. # include &l ...

  9. 练习5 键盘输入一个年份 判断年份 是否为闰年

    公历年份是整百或整千的(也就是年份末尾至少有2个0的),用年份除以400,如果能整除,就是闰年,不能整除就是平年, 公历其他的年份,用年份除以4,如果能整除,就是闰年,不能整除就是平年, 如1900年 ...

最新文章

  1. MongoDB自定义条件查询案例
  2. 如何用JS实现泛玉米解析
  3. 电脑怎么测试硬盘的读写速度_电脑硬盘这麽多到底该怎么选?硬盘的各类分类你知道吗...
  4. Django组件--cookie与session
  5. 学python需要什么基础-自学Python需要怎样的基础和准备
  6. [公告]决定博客园杂志所采用的标题
  7. 个人作业3------个人总结(alpha阶段)
  8. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_7 Mybatis中使用代理Dao的执行过程分析...
  9. Pycharm设置默认UTF8编码格式
  10. 强化学习 Q学习原理及例子(离散)附matlab程序
  11. EDGE网络已落户嘉兴
  12. STM32L476入坑-1
  13. Spring中AOP的Introductions使用介绍(五)
  14. 人力资源领域RPA的应用场景
  15. 精准大数据获客——移动 联通 电信运营商大数据分析_营销
  16. Unity动态(在代码中)更改Shader的相关属性(如颜色、Smoothness、材质……)
  17. NLP专题直播 | Transformer, BERT, ALBERT, XLNet全面解析(ALBERT第一作者亲自讲解)
  18. 分析ANR具体哪个函数耗时,打时间戳是什么意思
  19. Java数学竞赛的名次情况,网传丘成桐「怒斥」2020丘赛清华排名:一流大学的数学人才,究竟该怎么培养?...
  20. 8.字体样式(TextStyle)

热门文章

  1. Location specified by ndk.dir (**/Sdk/ndk-bundle) did not contain a valid NDK ...
  2. 《C语言编程魔法书:基于C11标准》——3.3 本章小结
  3. 事件的独立与常见的几种分布
  4. 淘宝直通车推广的两种方法看你适合哪一种?
  5. 本特利传感器330901-00-24-05-02-05
  6. 微软重组战略初显成效 Surface胡汉三卷土重来
  7. JAVA加密--AES加密算法JAVA实现及使用中的各种坑,超实用
  8. FT2004(D2000)开发实战之网口stmmac报错调试(Failed to reset the dma)
  9. 一分钟快速重启资源管理器
  10. 量子领域的机器学习人工智能(一)