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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

看题,看题
回复 使用道具 举报
我能继续混技术分么?

点评

可以,你想混多少就混多少吧  发表于 2013-7-31 23:04
回复 使用道具 举报
来看看,抢楼抢分抢美女,如果有的话。
回复 使用道具 举报
  1. /* 要求:输入某年某月,判断这一年与这一月分别距离1898年1月1日多少天
  2. */
  3. import java.util.Scanner;
  4. class Test{
  5. //判断输入的年份是否是闰年,是返回真,不是则返回假
  6. public static boolean isLeepYear(int year){
  7.        return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
  8. }
  9. //获取这一年的天数
  10. public static int getDaysByYear(int year) {
  11.   if (isLeepYear(year))
  12.         return 366;
  13.   else
  14.         return 365;
  15. }
  16. public static void main(String[] args){
  17.     Scanner s = new Scanner(System.in);
  18.     System.out.print("请选择年份:");
  19.     int year = s.nextInt(); // 输入年
  20.    System.out.print("请选择月份:");
  21.    int month = s.nextInt(); // 输入月
  22.    int days=0; //统计天数
  23.    //定义一个整数数组,用来存储每个月的天数
  24.    int[] monthly={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  25.   //判断这一年是否是闰年,是则将数组中的序标为1的数值改为29;
  26.   if(isLeepYear(year)){
  27.       monthly[1]=29;
  28.   }
  29.    //计算输入的年数距离1898年的天数
  30.   for(int i=1898;i<year;i++){
  31.        days+=getDaysByYear(year);
  32.   }
  33.    //计算输入的月份到1月的天数
  34.   for(int j=0;j<=month-1;j++){
  35.      days+=monthly[j];
  36.   }
  37.     System.out.println(year+"年"+month+"月距离1898年1月1日天数为:"+days);
  38. }
  39. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 getDaysByYear(year)参数传递有误.

查看全部评分

回复 使用道具 举报
file:///C:/Users/Administrator/Desktop/%E8%AE%A1%E7%AE%97%E5%A4%A9%E6%95%B0.PNG
回复 使用道具 举报

import java.util.Scanner;
/**
* 输入某年某月,判断这一年与这一月分别距离1898年1月1日多少天?
* 程序分析:以2013年7月为例,使用循环计算1898年1月1日距离2013年1月1日的总天数(考虑润年与平年的情况)
*                  再计算2013年1月1日距离7月的总天数
*/
public class CountDays {

        public static void main(String[] args) {
                Scanner in = new Scanner(System.in);
                System.out.printf("请输入一个年份:");
                int year = in.nextInt();               
                System.out.printf("请输入一个月份:");
                int month = in.nextInt();
                               
                int daysToYear = 0;
                for(int i=1898;i<year;i++){
                        daysToYear +=365;
                        if(i%400 == 0){
                                daysToYear += 1;
                        }else if(i%4==0 && i%100!=0){
                                daysToYear += 1;
                        }else{
                                ;
                        }
                }               
                int daysToMonth = 0;
                int []months = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
                for(int j=0;j<month;j++){
                        daysToMonth += months[j];
                }
                if((year%400==0)||(year%4==0 && year%100!=0)){
                        if(month>=2){
                                daysToMonth += 1;
                        }
                }
               
                System.out.println("距离"+year+"年有"+daysToYear+"天");
                System.out.println("距离"+year+"年"+month+"月有"+(daysToYear+daysToMonth)+"天");
        }
}

点评

不好意思,不是j=1,而是month-1应该更符合题意  发表于 2013-8-1 22:46

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 月份j=1,应该更准确

查看全部评分

回复 使用道具 举报
eclipse中编写代码计算天数

计算天数.PNG (50.33 KB, 下载次数: 14)

计算天数.PNG
回复 使用道具 举报
看看是怎么样的
回复 使用道具 举报
鼎力支持~!壮哉我大黑马
回复 使用道具 举报
好的,来瞧一瞧
回复 使用道具 举报


  1. import java.util.Scanner;

  2. /**
  3. * @ClassName: DayOfYear_Month
  4. * @Description: TODO(这里用一句话描述这个类的作用)
  5. * @author Sergio Han
  6. * @date 2013-8-1 上午10:07:38
  7. *
  8. */

  9. public class DayOfYear_Month {

  10.         public static void main(String[] args) {
  11.                
  12.                 //创建输入对象
  13.                 Scanner in = new Scanner(System.in);
  14.                
  15.                 System.out.println("请输入年份: ");
  16.                 int year = in.nextInt();
  17.                 System.out.println("请输入月份");
  18.                 int month = in.nextInt();
  19.                
  20.                 in.close(); //关闭输入
  21.                
  22.                 int days = 0; //统计天数变量
  23.                
  24.                 //循环获取距离的天数
  25.                 for(int i = 1898; i < year; i++)
  26.                 {
  27.                         days += getDaysByYear(i);
  28.                 }
  29.                
  30.                 //给定每年的月份天数
  31.                 int[] daysOfmonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  32.                 //判断是否为闰年,如果是把2月份设置为29天,也就是daysOfmonth数组下标为1的值为29
  33.                 if(isLeepYear(year))
  34.                 {
  35.                         daysOfmonth[1] = 29;
  36.                 }
  37.                
  38.                 //计算结果年份距离天数
  39.                 System.out.println("输入年份距离1898年1月1日的天数: " + days);
  40.                
  41.                 //循环获取月份的天数
  42.                 for(int i = 1; i < month; i++)
  43.                 {
  44.                         days += daysOfmonth[i];
  45.                 }
  46.                
  47.                 //计算结果月份距离天数
  48.                 System.out.println("输入月份距离1898年一月一日的天数 :" + days);
  49.                 System.out.println("当前月份的天数:" + daysOfmonth[month]);
  50.                
  51.         }
  52.        
  53.         //获取某年的天数
  54.         public static int getDaysByYear(int year)
  55.         {
  56.                 //判断是否为闰年
  57.                 if(isLeepYear(year))  
  58.                 {
  59.                         return 366;
  60.                 }else {
  61.                         return 365;
  62.                 }
  63.         }
  64.        
  65.         //判断是否闰年
  66.         public static boolean isLeepYear(int year)
  67.         {
  68.                 return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
  69.         }
  70. }

复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 少了一天

查看全部评分

回复 使用道具 举报
看一下 做题了
回复 使用道具 举报
  1. import java.util.*;
  2. /**
  3. 输入某年某月,判断这一年与这一月分别距离1898年1月1日多少天?
  4.   程序分析:以2013年7月为例,使用循环计算1898年1月1日距离2013年1月1日的总天数(考虑闰年与平年的情况)
  5.                   再计算2013年1月1日距离7月的总天数
  6. */

  7. class Demo
  8. {
  9.         public static final int baseYear = 1898;

  10.         public static void main(String[] args)
  11.         {
  12.                 Scanner scan = new Scanner(System.in);
  13.                 System.out.print("请输入年份:");
  14.                 int year = scan.nextInt();
  15.                 System.out.print("请输入月份:");
  16.                 int month = scan.nextInt();
  17.                
  18.                 //如果输入年份大于1898年
  19.                 if(year >= baseYear)
  20.                 {
  21.                         System.out.println(getDays1(year, month));
  22.                 }
  23.                 else
  24.                 {
  25.                         System.out.println(getDays2(year, month));
  26.                 }
  27.         }

  28.         public static long getDays1(int year, int month)
  29.         {
  30.                 long sum = 0l;
  31.                
  32.                 //遍历年,瑞年366,平年365
  33.                 for(int i = baseYear; i < year; i++)
  34.                 {
  35.                         if(isLeapYear(i))
  36.                         {
  37.                                 sum += 366;
  38.                         }
  39.                         else
  40.                         {
  41.                                 sum += 365;
  42.                         }
  43.                 }
  44.                
  45.                 //遍历月份
  46.                 for(int i = 1; i < month; i++)
  47.                 {
  48.                         switch(i)
  49.                         {
  50.                                 case 1:
  51.                                 case 3:
  52.                                 case 5:
  53.                                 case 7:
  54.                                 case 8:
  55.                                 case 10:
  56.                                 case 12:
  57.                                         sum += 31;
  58.                                         break;
  59.                                 case 2:
  60.                                         if(isLeapYear(year))
  61.                                         {
  62.                                                 sum += 29;
  63.                                         }
  64.                                         else
  65.                                         {
  66.                                                 sum += 28;
  67.                                         }
  68.                                         break;
  69.                                 case 4:
  70.                                 case 6:
  71.                                 case 9:
  72.                                 case 11:
  73.                                         sum += 30;
  74.                                         break;
  75.                         }
  76.                 }

  77.                 return sum;
  78.         }
  79.        
  80.         //如果year小于1898,计算方法就变了
  81.         public static long getDays2(int year, int month)
  82.         {
  83.                 long sum = 0;

  84.                 for(int i = year; i < baseYear; i++)
  85.                 {
  86.                         if(isLeapYear(i))
  87.                         {
  88.                                 sum += 366;
  89.                         }
  90.                         else
  91.                         {
  92.                                 sum += 365;
  93.                         }
  94.                 }

  95.                 for(int i = 1; i < month; i++)
  96.                 {
  97.                         switch(i)
  98.                         {
  99.                                 case 1:
  100.                                 case 3:
  101.                                 case 5:
  102.                                 case 7:
  103.                                 case 8:
  104.                                 case 10:
  105.                                 case 12:
  106.                                         sum -= 31;
  107.                                         break;
  108.                                 case 2:
  109.                                         if(isLeapYear(year))
  110.                                         {
  111.                                                 sum -= 29;
  112.                                         }
  113.                                         else
  114.                                         {
  115.                                                 sum -= 28;
  116.                                         }
  117.                                         break;
  118.                                 case 4:
  119.                                 case 6:
  120.                                 case 9:
  121.                                 case 11:
  122.                                         sum -= 30;
  123.                                         break;
  124.                         }
  125.                 }

  126.                 return sum;
  127.         }
  128.        
  129.         //判断是否是瑞年
  130.         public static boolean isLeapYear(int year)
  131.         {
  132.                 //1. 能被4整除,但不能被100整除。2.能被400整除
  133.                 if(year%4 == 0 && year%100 != 0 || year%400 == 0)
  134.                 {
  135.                         return true;
  136.                 }
  137.                 return false;
  138.         }
  139. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
虽然我分够了,不过还是来看看吧
回复 使用道具 举报
虽然我分够了,不过还是来看看吧
回复 使用道具 举报
看看会不会
回复 使用道具 举报
支持一下,看看
回复 使用道具 举报
好难的题目
回复 使用道具 举报
试试吧,检验一下自己。
回复 使用道具 举报
飘过来瞄一眼看看能回答不
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马