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);
}
}