从键盘输入一个日期,格式为yyyy-M-d 要求计算该日期与1949年10月1日距离多少天
2013-04-03 15:09
351 查看
/* * 从键盘输入一个日期,格式为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; // 平年下标为 0 if((y%4==0&&y%100!=0)||(y%400==0)) i = 1; // 闰年下标为 1 for(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日距离多少天(java)
- 从键盘输入一个日期,格式为yyyy-M-d 要求计算该日期与1949年10月1日距离多少天
- 黑马程序员 测试题:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天
- 黑马程序员---------------------编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期, * 程序计算这一天是星期几,并且计算出是一年中的第几天
- 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天
- 黑马程序员—编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期, *程序计算这一天是星期几,并且计算出是一年中的第几天。 */
- 给定一个日期,输出这个日期是该年的第几天。输入数据有多组,每组占一行,数据格式为 YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
- 设计一个程序输入两个日期计算相隔多少天,或计算一个日期加上间隔后的日期。
- WinForm 中要求在textBox中输入的内容必须是日期格式yyyy-mm-dd,判断用户输入是否有效!
- WinForm 中要求在textBox中输入的内容必须是日期格式yyyy-mm-dd,判断用户输入是否有效!
- 从键盘输入一个指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各多少张
- 从控制台输入一个日期,要求必须以09/30(月/日)的格式输入
- C语言 从键盘输入一个日期计算该日期是该年的第几天
- 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。 如果输入的整数本身就是素数,则输出该素数本身,
- 输入一个日期,判断这个日期在一年中是哪一天,是星期几,计算两个日期间的天数,使用字符串输出日期
- 用户输入一个日期,计算时星期几,并计算时一年中的某一天,使用自定义方法判断
- 定义一个“点”(Point)类用来表示三维空间中的点(有三个坐标)。要求如下: (1)可以生成具有特定坐标的点对象。 (2)提供可以设置三个坐标的方法。 (3)提供可以计算该“点”距原点距离平方的方法。 (4)编写主类程序验证。
- 用户输入一个日期计算是星期几以及是一年中的第几天
- 编程题(从键盘上输入一个整数,分别计算奇数位和偶数位之和)
- 作业五-设计一个程序计算输入的两个数的和与差,要求自定义一个函数 sum_diff(float op1, float op2, float *psum, float *pdiff),其中 op1 和 op2 是输入的两个数,*psum 和*pdiff 是计算得出的和与差.