Heim >Java >javaLernprogramm >[Java] Zwei Methoden zum Finden von Daten mit mehr als 7 aufeinanderfolgenden Tagen in einem Monat
方法一:通过数组实现 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(); } } }
相关推荐:
Das obige ist der detaillierte Inhalt von[Java] Zwei Methoden zum Finden von Daten mit mehr als 7 aufeinanderfolgenden Tagen in einem Monat. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!