A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 神之梦 于 2013-8-4 21:58 编辑

说明:
  由于上周滔哥出了个20分的大题,故本版的答题活动暂时中断。
  现在正式重新启动,不打算出很难的题目,也不打算一次性出很多的题;
  每次就一两个比较简单的题目,答题时间有限制,答题活动的持续时间最多三天。


此次活动结束,欢迎下次再来{:soso_e157:}



题目:

  输入某年某月,判断这一年与这一月分别距离1898年1月1日多少天?
  程序分析:以2013年7月为例,使用循环计算1898年1月1日距离2013年1月1日的总天数(考虑闰年与平年的情况)

                  再计算2013年1月1日距离7月的总天数


要求:

  1、题目须自己做出,有问题请及时联系楼主。
  2、直接在本帖回复,代码放在代码块中。
  3、代码要有适当注释,无注释无分。
  4、由于题目不难,思路也可以多种,所以某个思路第一个做出来,且结果正确的2分;接下来如果思路相同,结果正确的1分。






99 个回复

倒序浏览
抢分咯!抢分咯!抢分咯!
回复 使用道具 举报
看看再说
回复 使用道具 举报
嘿嘿  来抢题啦!
回复 使用道具 举报
我看看









回复 使用道具 举报
嘿嘿  来啦。
回复 使用道具 举报
看看.......
回复 使用道具 举报
看看~~~~~~~
回复 使用道具 举报
肥猫 中级黑马 2013-7-31 20:28:11
9#
本帖最后由 肥猫 于 2013-8-1 21:53 编辑

小苗你去给我加3分啊~~.怎么没屏蔽?
  1. package cn.lj.singleton;

  2. import java.util.Scanner;

  3. /**
  4. * 健壮性不够啊,不想在去加什么正则,抛什么异常了,只完成基本功能.
  5. *
  6. * @author 肥猫
  7. * */
  8. public class CheckCalendar2 {

  9.        public static void main(String[] args) {
  10.                Scanner input = new Scanner(System.in);
  11.                System.out.print("输入日期:");
  12.                String s = input.nextLine();
  13.                String[] str = s.split("-");// 以-分割字符串将年月日分别开存并进行累加
  14.                int year = Integer.parseInt(str[0]);
  15.                int month = Integer.parseInt(str[1]);
  16.                int day = Integer.parseInt(str[2]);
  17.                int count, i, total = 0;
  18.                boolean leap = false;
  19.                leap = (year % 400 == 0 || year % 4 == 0 && year % 100 != 0);// 判别闰年的条件
  20.                count = 0;
  21.                for (int j = 1898; j < year; j++) {// 累计总天数的循环
  22.                      if (j % 400 == 0 || j % 4 == 0 && j % 100 != 0) {
  23.                             total += 366;
  24.                     } else {
  25.                             total += 365;
  26.               }
  27.       }

  28.                for (i = 1; i <= month - 1; i++) {// 累计是今年第几天的循环
  29.                  switch (i) {
  30.                      case 1:
  31.                      case 3:
  32.                      case 5:
  33.                      case 7:
  34.                      case 8:
  35.                      case 10:
  36.                      case 12:

  37.                             count = count + 31;
  38.                             break;
  39.                      case 4:
  40.                      case 6:
  41.                      case 9:
  42.                      case 11:

  43.                             count = count + 30;
  44.                             break;
  45.                      case 2:
  46.                          if (leap) {

  47.                           count = count + 29;
  48.                       } else {

  49.                           count = count + 28;
  50.             }
  51.                       break;
  52.                       default:
  53.         }
  54.    }
  55.             count = count + day;// 今年的天数
  56.             System.out.println("是今年的第:" + count + "天");
  57.             System.out.println("距离1898年1月1日已经:" + total + "天了");
  58.             if (input != null) {// 关闭流
  59.             input.close();
  60.         }
  61.      }
  62. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
神之梦 + 2 肥肥肥肥肥猫

查看全部评分

回复 使用道具 举报
来看看~
回复 使用道具 举报
抢题喽抢题喽抢题喽
回复 使用道具 举报
本帖最后由 风雨兼程 于 2013-7-31 21:44 编辑
  1. 顶题了
复制代码
回复 使用道具 举报
看看神马
回复 使用道具 举报
  1. import java.text.SimpleDateFormat;
  2. import java.util.Calendar;
  3. import java.util.Scanner;

  4. public class Test4 {
  5.         public static void main(String[] args) {
  6.                 Scanner sc = new Scanner(System.in);

  7.                 String date = sc.nextLine();// 输入"年 月"的形式
  8.                 String[] s = date.split(" ");// 然后用空格将年和月分开,存在数组中
  9.                 int year = Integer.parseInt(s[0]);// 获取年
  10.                 int month = Integer.parseInt(s[1]);// 获取月份

  11.                 Calendar c = Calendar.getInstance();// 创建Calendar对象
  12.                 int day1 = 0; // 定义计数器,用来存储天数,年之间相距的时间
  13.                 for (int i = 1898; i < year; i++) {
  14.                         c.set(i, 1, 1);
  15.                         day1 += c.getMaximum(Calendar.DAY_OF_YEAR);// 获取每一年的天数
  16.                 }
  17.                 c.set(year, month, 1);// 设置时间为输入的时间
  18.                 int day2 = c.get(Calendar.DAY_OF_YEAR);// 获取输入时间距离1月1日的天数
  19.                 day2 += day1;// 输入的时间距1989年1月1日的时间
  20.                 System.out.println(year + "年1月1日距1989年1月1日的天数是:" + day1);
  21.                 System.out.println(year + "年" + month + "月" + "距1989年1月1日的天数是:" + day2);
  22.         }
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 好像多算了

查看全部评分

回复 使用道具 举报
看看{:soso_e130:}
回复 使用道具 举报
:)                           
回复 使用道具 举报
瞧一瞧看一看咯
回复 使用道具 举报
看一看,瞧瞧题目:)
回复 使用道具 举报
  1. /*
  2.         题目:输入某年某月,判断这一年与这一月分别距离1898年1月1日多少天?
  3. */

  4. import java.util.Calendar;
  5. import java.util.Scanner;

  6. class  GetDay
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 Scanner in = new Scanner(System.in);
  11.                 String str;
  12.                 System.out.println("请出入一个年月,中间用空格隔开,如2013 7 :");
  13.                 int year, month;
  14.                 while(true){
  15.                         str = in.nextLine();
  16.                         if(str.matches("\\d+ +[01]?\\d")){
  17.                                 String[] strArr = str.split(" +");
  18.                                 year = Integer.parseInt(strArr[0]);
  19.                                 month = Integer.parseInt(strArr[1]);
  20.                                 if(year > 0 || month > 0 || month < 13)
  21.                                         break;
  22.                         }                       
  23.                         System.out.println("输入格式错误,请重新输入");
  24.                 }
  25.                 //输出结果
  26.                 System.out.println(year + "年距离1898年1月1日的天数为: " + getTotalDay(year) + "天");
  27.                 System.out.println(year + "年" + month + "月距离该年1月1日的天数为: " + getTotalDay_1(year,month) + "天");
  28.                
  29.         }

  30.         //获取从某一年的1月1日距离1898年的天数
  31.         public static int getTotalDay(int year){
  32.                 if(year == 1898)
  33.                         return 0;
  34.                 int smaller, bigger;
  35.                 if(year > 1898){
  36.                         smaller = 1898;
  37.                         bigger = year;
  38.                 }else{
  39.                         smaller = year;
  40.                         bigger = 1898;
  41.                 }
  42.                 int sum = 0;
  43.                 Calendar c = Calendar.getInstance();
  44.                 while(smaller < bigger){
  45.                         c.set(++smaller, 0, 1);
  46.                         c.add(Calendar.DAY_OF_MONTH, -1);
  47.                         sum += c.get(Calendar.DAY_OF_YEAR);
  48.                 }
  49.                 return sum;
  50.         }

  51.         //获取某月的第一天距离当年第一天有多少天
  52.         public static int getTotalDay_1(int year, int month){
  53.                 int sum = 0;
  54.                 Calendar c = Calendar.getInstance();
  55.                 for(int i = 1; i < month; i++){
  56.                         c.set(year, i, 1);
  57.                         c.add(Calendar.DAY_OF_MONTH, -1);
  58.                         sum += c.get(Calendar.DAY_OF_MONTH);
  59.                 }
  60.                 return sum;
  61.         }
  62. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
神之梦 + 2 考虑很全面啊

查看全部评分

回复 使用道具 举报
哦 哦 终于来了
回复 使用道具 举报
12345下一页
您需要登录后才可以回帖 登录 | 加入黑马