一、需求分析
本次工程的需求:
输入邮编可以查询城市,输入省、市,可以查询到它的下一级的邮编和名称
二、分解功能模块
分解功能的模块:
- 将 excel 导入到 java 中
- 将导入的 excel 内容,存储到 hashmap 中
- 实现 I/O 输入输出流
- 完成单邮编单城市的查询
- 对 Excel 的排序进行观察,自造算法并完成代码
三、将 excel 导入到 java 中
1.导入代码
//读取Downloads文件夹gaode.xlsxFileInputStream in = new FileInputStream(new File("/Users/mac/Downloads/gaode.xlsx"));Workbook workbook = new XSSFWorkbook(in);Sheet sheet = workbook.getSheetAt(0);int rowNum = sheet.getLastRowNum();for (int i = 2;i < rowNum; i++){Row row = sheet.getRow(i);String name = row.getCell(0).getStringCellValue();String abcode = row.getCell(1).getStringCellValue();}
2. 添加 pom.xml 依赖
<dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.0</version></dependency>
3. 添加import依赖,如果没有自动出现
import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.File;
四、对Excel 的排序进行观察,自造算法并完成代码
1.观察直辖市的邮编

仔细观察,我们可以看到四个直辖市的邮编都遵循这样的规律,它们是北京、上海、重庆、天津。以 11,12,31,50 开头。
2.观察特别行政区的邮编

3.观察浙江省和杭州市的邮编

4.观察内蒙古自治区的邮编结构

5.小结
所以我们对邮编分为三种情况:直辖市、特别行政区、省(自治区)
一级行政单位的格式为 XX0000
6.分解邮编
我们可以把6位邮编分为 abcdef,其中 ab为前两位,cd为中间两位,ef为后两位,一级行政单位的格式为 ab0000
6.1 直辖市
直辖市本体为 ab0000,下辖区为 ab0100-ab0199,重庆市例外,有ab0200-ab0299情况。
6.2 特别行政区
特别行政区本体为 ab0000,下辖区为ab0001-ab0099
6.3 省/自治区
本体代码为 ab0000,下辖地级市为 ab0100-ab9900,地级市本体(省会城市为例)为ab0100,下辖区/县/县级市邮编为 ab0101-ab0199
7.字符串的拼接
两个test类
String a = null;String b = "10";String c = "01";String d = "02";a=b+c+d;System.out.println(a);
String str = "hello";char[] ch = str.toCharArray();String a = String.valueOf(ch[0])+ch[1];System.out.println(a);
