欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Java

【Java】两种方法找出一个月连续超过7天的日期

程序员文章站 2022-03-14 10:01:15
...

方法一:通过数组实现
package test;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.Random;public class ListData {
    public static void main(String[] args) throws IOException {
        List<String> list = new ArrayList<String>();
        Random rd = new Random();
        String str1 = new String();

        File file = new File("E:\\date.txt");
        FileWriter fis = new FileWriter(file);

        File file_sort = new File("E:\\date_sort.txt");
        FileWriter fis_sort = new FileWriter(file_sort);

        for (int i = 0; i < 444; i++) {
            str1 = (rd.nextInt(31) % 12 + 1) + "-" + (rd.nextInt(32) % 31 + 1);
            fis.write(str1 + "\r\n");//          list.add(str1);//          System.out.println(str1);
        }
        fis.close();//      list.add("8-2");//      list.add("8-2");//      list.add("8-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-2");//      list.add("5-2");//      list.add("5-3");//      list.add("5-4");//      list.add("5-5");//      list.add("5-6");//      list.add("5-7");//      list.add("5-8");//      list.add("5-9");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-1");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-4");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-5");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("8-6");//      list.add("8-7");//      list.add("5-2");//      list.add("5-2");//      list.add("5-2");//      list.add("1-1");//      list.add("1-2");//      list.add("1-4");//      list.add("1-5");//      list.add("1-6");//      list.add("1-7");//      list.add("1-8");//      list.add("1-9");//      list.add("1-5");//      list.add("1-6");//      list.add("8-3");//      list.add("1-1");//      list.add("1-2");//      list.add("1-4");//      list.add("1-5");//      list.add("1-6");//      list.add("1-7");//      list.add("1-3");//      
//      list.add("1-12");//      list.add("1-13");//      list.add("1-14");//      list.add("1-15");//      list.add("1-16");//      list.add("1-17");//      list.add("1-18");


        list.add("1-1");
        list.add("1-2");
        list.add("1-4");
        list.add("1-5");
        list.add("1-6");
        list.add("1-7");
        list.add("1-3");

        list.add("1-12");
        list.add("1-13");
        list.add("1-14");
        list.add("1-15");
        list.add("1-16");
        list.add("1-17");
        list.add("1-18");

        list.add("1-20");
        list.add("1-21");
        list.add("1-22");
        list.add("1-23");
        list.add("1-24");
        list.add("1-25");
        list.add("1-26");
        list.add("1-27");
        list.add("1-28");
        list.add("1-29");
        list.add("1-30");
        list.add("1-31");
        int[][] date = new int[12][32];
        for (String str : list) {
            int ri = Integer.parseInt(str.split("-")[1]) - 1;
            int yue = Integer.parseInt(str.split("-")[0]) - 1;
            date[yue][ri] = 1;
        }

        for (int i = 0; i < 12; i++) {
            int[][] mark = new int[1][2];
            int k = 0;
            System.out.println("--------" + (i + 1) + "月" + "---------------");
            fis_sort.write("-------" + (i + 1) + "月" + "---------------" + "\r\n");
            for (int j = 0; j < 31; j++) {
                if (date[i][j] == 1) {
                    k++;
                    if (k >= 7 && date[i][j + 1] == 0) {
                        mark[0][0] = i;
                        mark[0][1] = j;
                        System.out.println((i + 1) + "月" + (j + 2 - k) + "日,开始连续" + k + "天");
                        fis_sort.write((i + 1) + "月" + (j + 2 - k) + "日,开始连续" + k + "天" + "\r\n");
                        for (int l = j - k + 1; l <= j; l++) {
                            System.out.println((i + 1) + "月" + (l + 1) + "日");
                            fis_sort.write((i + 1) + "月" + (l + 1) + "日" + "\r\n");
                        }

                    }
                } else {
                    k = 0;
                }
            }

        }
        fis_sort.close();
    }
}
方法二:通过TreeSet实现
package test;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Random;import java.util.TreeSet;public class ListData_1 {
    public static void main(String[] args) throws IOException {
        List<String> list = new ArrayList<String>();
        Random rd = new Random();
        String str1 = new String();

        File file = new File("E:\\date.txt");
        FileWriter fis = new FileWriter(file);

        File file_sort = new File("E:\\date_sort.txt");
        FileWriter fis_sort = new FileWriter(file_sort);

        for (int i = 0; i < 666; i++) {
            str1 = (rd.nextInt(31) % 12 + 1) + "-" + (rd.nextInt(32) % 31 + 1);
            fis.write(str1 + "\r\n");//          list.add(str1);//          System.out.println(str1);
        }
        fis.close();
        list.add("1-1");
        list.add("1-2");
        list.add("1-4");
        list.add("1-5");
        list.add("1-6");
        list.add("1-7");
        list.add("1-3");

        list.add("1-12");
        list.add("1-13");
        list.add("1-14");
        list.add("1-15");
        list.add("1-16");
        list.add("1-17");
        list.add("1-18");

        list.add("1-20");
        list.add("1-21");
        list.add("1-22");
        list.add("1-23");
        list.add("1-24");
        list.add("1-25");
        list.add("1-26");
        list.add("1-27");
        list.add("1-28");
        list.add("1-29");
        list.add("1-30");
        list.add("1-31");

        //取出来放到map
        HashMap<Integer,TreeSet<Integer>> map=new HashMap<Integer,TreeSet<Integer>>();
        TreeSet setValue=null;
        for (String str : list) {
            int ri = Integer.parseInt(str.split("-")[1]);
            int yue = Integer.parseInt(str.split("-")[0]);
            if(!map.containsKey(yue)) {

                setValue=new TreeSet<Integer>();
                setValue.add(ri);
                map.put(yue, setValue);

            }else {//baohan
                setValue=map.get(yue);
                setValue.add(ri);
                map.put(yue, setValue);
            }
        }

        for (Entry<Integer, TreeSet<Integer>> entry : map.entrySet()) {
//          System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
            int month=entry.getKey();
            TreeSet<Integer> value=entry.getValue();
            String v=value.toString().replace("[", "").replace("]", "").replaceAll(" ", "");//          System.out.println(v);

            String []splDate=v.split(",");
            int []v_char_arr=new int[splDate.length];
            for (int i=0;i<splDate.length;i++) {
                v_char_arr[i]=Integer.parseInt(splDate[i]);
            }
            int k=0;//          for (int v1 : v_char_arr) {
//              System.out.print(v1+" ");//              
//          }
//          System.out.println();//          
            for (int i=0;i<v_char_arr.length-2;i+=1) {

                int v1=v_char_arr[i];
                int v2=v_char_arr[i+1];
                int v3=v_char_arr[i+2];
                if(v2-v1==1) {
                    k++;//                  System.out.println(v3-v2);//                  System.out.println(i+2+"------");
                    if(k>=6&&((v3-v2)>1||(i+2)==v_char_arr.length-1)) {
                        System.out.println(month+"月"+(v2-k)+"日,开始连续"+(k+1)+"天");
                    }
//                  
                }else {
                    k=0;
                }
            }
            System.out.println();

        }

    }
}

相关推荐:

一个计算日期连续性的脚本

php判断两个日期之间相差多少个月份的方法,php日期

以上就是【Java】两种方法找出一个月连续超过7天的日期的详细内容,更多请关注其它相关文章!

相关标签: Java