找出一个月连续超过7天的日期java代码实现

方法一:通过数组实现
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();

        }

    }
}

猜你喜欢

转载自blog.csdn.net/qq_33202508/article/details/81509497