Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每月统计_Java_Arrays - Fatal编程技术网

Java 每月统计

Java 每月统计,java,arrays,Java,Arrays,我正在尝试创建一个方法来计算数组中每个完整月份的数量。我的数组包含MM/dd/yyyy格式的日期。数组可以包含从任意日期开始到任意日期结束的日期。日期按从最早到最新的顺序排列,只包含工作日 例如,如果数组的日期为2010年6月15日至2012年1月15日,则它将返回以下数组: 一月=1,二月=1,三月=1,四月=1,五月=1,六月=1,七月=2,八月=2,九月=2,十月=2,十一月=2,十二月=2 我希望有人能给我一些提示,以下是我目前的情况: double[] months = new dou

我正在尝试创建一个方法来计算数组中每个完整月份的数量。我的数组包含MM/dd/yyyy格式的日期。数组可以包含从任意日期开始到任意日期结束的日期。日期按从最早到最新的顺序排列,只包含工作日

例如,如果数组的日期为2010年6月15日至2012年1月15日,则它将返回以下数组: 一月=1,二月=1,三月=1,四月=1,五月=1,六月=1,七月=2,八月=2,九月=2,十月=2,十一月=2,十二月=2

我希望有人能给我一些提示,以下是我目前的情况:

double[] months = new double[12];

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
SimpleDateFormat yyyy = new SimpleDateFormat("yyyy");

for(int ii = 0 ; ii < array.length-length ; ii++){

        date = (Date)formatter.parse(array[ii][0]);
        String currentDateMY = sdf.format(date);
        String currentDateYYYY = yyyy.format(date);

        date = (Date)formatter.parse(array[ii+1][0]);
        String nextDateMY = sdf.format(date);

            if (!currentDateMY.equals(nextDateMY)){

                date = (Date)formatter.parse(array[ii][0]);
                sdf = new SimpleDateFormat("MM");
                String currentDateM = sdf.format(date);

                if (currentDateM.equals("01")) months[0] = jan++;
                if (currentDateM.equals("02")) months[1] = feb++;
                if (currentDateM.equals("03")) months[2] = mar++;
                if (currentDateM.equals("04")) months[3] = apr++;
                if (currentDateM.equals("05")) months[4] = may++;
                if (currentDateM.equals("06")) months[5] = jun++;
                if (currentDateM.equals("07")) months[6] = jul++;
                if (currentDateM.equals("08")) months[7] = aug++;
                if (currentDateM.equals("09")) months[8] = sep++;
                if (currentDateM.equals("10")) months[9] = oct++;
                if (currentDateM.equals("11")) months[10] = nov++;
                if (currentDateM.equals("12")) months[11] = dec++;
            }
}
double[]月=新的double[12];
DateFormat格式化程序=新的SimpleDataFormat(“yyyy-MM-dd”);
日期;
SimpleDataFormat sdf=新的SimpleDataFormat(“yyyy-MM”);
SimpleDataFormat yyyy=新的SimpleDataFormat(“yyyy”);
for(int ii=0;ii
脑死法:

  • 创建带有开始日期和结束日期的GregorianCalendar。(输入1表示月的开始日,输入
    GregorianCalendar.getActualMaximum(月的开始日)
    表示月的开始日,输入结束日)
  • 继续在开始日期(
    gregoriacalendar.add(month,1)
    )上添加一个月,并检查它是否在结束日期()之后。如果不是,则增加该月的计数器
  • 如果实际开始日期的月日分量为1,并且实际结束日期的月日分量等于
    GregoriaCalendar.getActualMaximum(月日)
    ,则为开始和结束添加1 如果开始日期是星期一,并且您希望包括前一个周末,那么您可以对此进行检查(类似地,结束日期是星期五)

    更明智的做法是:


    获取日期之间的年差。每月增加差值-2,如果确实更大。然后检查起始月份是在结束月份之前还是之后,并相应地增加介于两者之间的月份。检查起始月和结束月本身是否包括在上述范围内。

    您被困在哪里?这是家庭作业吗?您如何知道阵列上的开始日期和结束日期?这是一个多维数组吗?除了周末,日期之间是否有间隔?这是一个问题吗?或者你只是让我们知道你在做什么:祝你好运。。。说真的,问题是什么?是的,你应该一直寻找已经制作好的类,这样你就不必重新发明轮子了。特别是对于初学者。