import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashSet; import java.util.Hashtable; import java.util.Map; import java.util.Scanner; import java.util.Set; //以下格式 2013-10-01~2013-10-02 100 表示 2013-10-01 入住,2013-10-02 离店,入住一天的价格是¥100。 //现有文件中包含多行这样的日期价格段,请将其合并,合并的规则包括: //1)价格相同,日期段相邻或者重叠的需要合并 //2)相同日期的价格已后面录入的为准 //例子1: //2013-08-01~2013-08-31 300 //2013-08-25~2013-09-30 300 //合并后就是 //2013-08-01~2013-09-30 300 //例子2: //2013-08-01~2013-12-31 300 //2013-10-01~2013-10-07 500 //合并之后就是 //2013-08-01~2013-10-01 300 //2013-10-01~2013-10-07 500 //2013-10-07~2013-12-31 300 //请读入指定文件 http://fresh.qunar.com/sites/price.txt,并将所有的日期价格段合并后,按照入住日期升序展示,输出到控制台即可。 //考察点: 基础算法, 数据结构 public class Homework2 { public static String[][] readTxt(File file){ String[][]a ;//= new int[1000][1000]; try { Scanner sn = new Scanner(new FileReader(file)); String line; int start,end; while(sn.hasNextLine()){ line = sn.nextLine().replaceAll("-", ""); start =Integer.valueOf(line.substring(0, line.indexOf(‘~‘))); end =Integer.valueOf(line.substring(line.indexOf(‘~‘)+1, line.indexOf(‘ ‘))); a[start][end]= line.substring(line.indexOf(" ")+1, line.length()); } sn.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } System.out.println(a.toString()); return a; } //Map<Map<Date,Date>,Integer> data = new Hashtable<Map<Date,Date>, Integer>(); //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // Map<Date, Date>date = new Hashtable<Date, Date>(); // try { // System.out.println(line.replaceAll("-", "")); //System.out.println(line); // Date start = sdf.parse(line.substring(0, line.indexOf(‘~‘))); // Date end = sdf.parse(line.substring(line.indexOf(‘~‘)+1, line.indexOf(‘ ‘))); // date.put(start, end); // //System.out.println(sdf.format(start)+"~"+sdf.format(end)); // data.put(date, Integer.valueOf(line.substring(line.indexOf(" ")+1, line.length()))); // } catch (ParseException e) { // e.printStackTrace(); // } //System.out.println(sdf.format(data.toString())); public static void main(String[] args){ //Map<Map<Date,Date>,Integer> data; int[][]a; File price = new File("C:\\Users\\xifeng\\Downloads\\price.txt"); a = readTxt(price); } }
原文:http://www.cnblogs.com/yizhe/p/4596268.html