定义了一个主函数的类,用来运行整个程序。 // 解析 subway.txt 获取地铁线路图信息

public static void subwayMap() {

String f = "subway.txt";

try (FileReader r = new FileReader(f);

BufferedReader br = new BufferedReader(r)

) {

String line;

while ((line = br.readLine()) != null) {

String[] tokens = line.split(": ", 2); // 分离线路及站点

SubwayLine sl = new SubwayLine();

sl.name = tokens[0];

String[] tokens2 = tokens[1].split(" "); // 分离各个站点

for(String s: tokens2) {

Boolean isTransfer = s.contains("#");

Station station = new Station();

if(isTransfer) {

station.isTransferStation = true;

String[] tokens3 = s.split("#"); // 分离换乘站信息

station.name = tokens3[0];

for(int i = 1; i < tokens3.length; i++) {

if(tokens3[i].equals("1"))

station.lines.add("1号线");

else if(tokens3[i].equals("2"))

station.lines.add("2号线");

else if(tokens3[i].equals("4"))

station.lines.add("4号线");

else if(tokens3[i].equals("5"))

station.lines.add("5号线");

else if(tokens3[i].equals("6"))

station.lines.add("6号线");

else if(tokens3[i].equals("7"))

station.lines.add("7号线");

else if(tokens3[i].equals("8北"))

station.lines.add("8号线北");

else if(tokens3[i].equals("8南"))

station.lines.add("8号线南");

else if(tokens3[i].equals("9"))

station.lines.add("9号线");

else if(tokens3[i].equals("10"))

station.lines.add("10号线");

else if(tokens3[i].equals("13"))

station.lines.add("13号线");

else if(tokens3[i].equals("14西"))

station.lines.add("14号线西");

else if(tokens3[i].equals("14东"))

station.lines.add("14号线东");

else if(tokens3[i].equals("15"))

station.lines.add("15号线");

else if(tokens3[i].equals("16"))

station.lines.add("16号线");

else if(tokens3[i].equals("八通"))

station.lines.add("八通线");

else if(tokens3[i].equals("房山"))

station.lines.add("房山线");

else if(tokens3[i].equals("昌平"))

station.lines.add("昌平线");

else if(tokens3[i].equals("亦庄"))

station.lines.add("亦庄线");

else if(tokens3[i].equals("燕房"))

station.lines.add("燕房线");

else if(tokens3[i].equals("S1"))

station.lines.add("S1线");

else if(tokens3[i].equals("西郊"))

station.lines.add("西郊线");

else if(tokens3[i].equals("首都机场"))

station.lines.add("首都机场线");

}

station.line = tokens[0];

stations.add(station);

sl.stations.add(station);

}

else {

if(s.contains("!"))

continue;

station.isTransferStation = false;

station.name = s;

station.line = tokens[0];

stations.add(station);

sl.stations.add(station);

}

}

lines.add(sl);

}

} catch (IOException e) {

e.printStackTrace();

}

} public static String getLineName(Station station) {

for (SubwayLine s : lines) {

for(Station st : s.stations) {

if(st.name.equals(station.name))

return st.line;

}

}

return "";

} public static void main(String[] args) throws IOException {

switch (args[0]) {

case "-map":

if (args.length == 2) {

subwayMap();

System.out.println("数据读取成功 ~");

} else {

System.out.println("输入格式有误,请重新输入。");

break;

}

break;

case "-a":

subwayMap();

int flag1 = 0; //判断该线路是否在所有线路中

for(SubwayLine sl : lines) {

if(sl.name.equals(args[1])) {

flag1 = 1;

break;

}

}

if(flag1 == 0) {

System.out.println("该线路不存在,请重新输入。");

break;

}

if (args.length == 6 && args[4].equals("-o")) {

for(int i = 0; i < lines.size(); i++) {

if(args[1].equals(lines.get(i).name)) {

String str = lines.get(i).name+"所经过的站点为: ";

for(Station s : lines.get(i).stations) {

if(s.isTransferStation) {

str += s.name+"(可换乘";

for(String st: s.lines) {

str += " "+st;

}

str +=") ";

}

else {

str += s.name+" ";

}

}

byte[] text = str.getBytes();

File file = new File("/Users/bunnywwwwyj/Desktop/BeiJingSubway", "station.txt");

if(file.exists() == true)

file.delete();

file.createNewFile();

FileOutputStream out = new FileOutputStream(file);

out.write(text);

out.close();

break;

}

}

String f2 = "/Users/bunnywwwwyj/Desktop/BeiJingSubway/station.txt";

try (FileReader r2 = new FileReader(f2);

BufferedReader br2 = new BufferedReader(r2)

) {

String line2;

while ((line2 = br2.readLine()) != null) {

System.out.println(line2);

}

} catch (IOException e) {

e.printStackTrace();

}

}

else {

System.out.println("输入格式有误,请重新输入。");

break;

}

break;

case "-b":

subwayMap();

if(args[1].equals(args[2])) {

System.out.println("起点站与终点站不能相同");

break;

}

int flag2 = 0; //判断起点站是否在所有站点中

int flag3 = 0; //判断终点站是否在所有站点中

for(Station s : stations) {

if(s.name.equals(args[1]))

flag2 = 1;

if(s.name.equals(args[2]))

flag3 = 1;

if(flag2 == 1 && flag3 == 1)

break;

}

if(flag2 == 0) {

System.out.println("该起点站不存在,请重新输入。");

break;

}

if(flag3 == 0) {

System.out.println("该终点站不存在,请重新输入。");

break;

}

if (args.length == 7 && args[3].equals("-map") && args[5].equals("-o")) {

Result r = Dijkstra.calculate(new Station(args[1]), new Station(args[2]));

int total = r.getPassStations().size()+1;

String str = "共经过"+total+"站\n";

str += r.getStartStation().name+"\n";

String line = getLineName(r.getStartStation());

for (int i = 0; i < r.getPassStations().size(); i++) {

if(r.getPassStations().get(i).isTransferStation) {

str += r.getPassStations().get(i).name+"\n";

if (i != r.getPassStations().size()-1 && !line.equals(getLineName(r.getPassStations().get(i+1)))) {

str += "换乘"+getLineName(r.getPassStations().get(i+1))+"\n";

line = getLineName(r.getPassStations().get(i+1));

}

}

else

str += r.getPassStations().get(i).name+"\n";

}

byte[] text = str.getBytes();

File file = new File("/Users/bunnywwwwyj/Desktop/BeiJingSubway", "routine.txt");

if(file.exists() == true)

file.delete();

file.createNewFile();

FileOutputStream out = new FileOutputStream(file);

out.write(text);

out.close();

String f3 = "/Users/bunnywwwwyj/Desktop/BeiJingSubway/routine.txt";

try (FileReader r3 = new FileReader(f3);

BufferedReader br3 = new BufferedReader(r3)

) {

String line3;

while ((line3 = br3.readLine()) != null) {

System.out.println(line3);

}

} catch (IOException e) {

e.printStackTrace();

}

}

else {

System.out.println("输入格式有误,请重新输入。");

break;

}

break;

default:

System.out.println("输入格式有误,请重新输入。");

}

飞机地铁的java项目怎么做_个人项目-地铁出行路线规划(Java代码实现)相关推荐

  1. 第一次做项目经理总结_华为项目经理必备技能

    在华为做项目经理,经常会遇到各种项目和干系人,如果没有一套过硬的生存技能,是很难顺利进展项目的.下面的这10项技能都是基础款,来了解一下~(以下根据"PM圈子"文章,加上华为的项目 ...

  2. java中mvc事务_关于项目中的事务问题_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...

    SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring MVC 分离了控制器.模型对象.分派器以及处理程序对象 ...

  3. java高深技术总结_一名25K以上的高薪Java程序员总结出的技术以及学习技能

    原标题:一名25K以上的高薪Java程序员总结出的技术以及学习技能 总所周知,Java是目前使用最为广泛的网络编程语言之一. 它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点. 一般 ...

  4. java职业发展路线图_从程序员到CTO的Java技术路线图 JAVA职业规划 JAVA职业发展路线图 系统后台框架图、前端工程师技能图 B2C电子商务基础系统架构解析...

    http://zz563143188.iteye.com/blog/1877266在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样 ...

  5. java中动态输入_根据特定输入动态生成字符串的代码 - java

    我想根据特定的输入动态生成字符串 如果输入= 1,则字符串输出= 00000 如果它= 10,则输出= 0000a 输入= 16,输出= 00010 等等 . 生成的字符串是从0到9的数字和从a到f的 ...

  6. 百度java的线程技术_自我提升(基础技术篇)——java线程简介

    前言:虽然自己平时都在用多线程,也能完成基本的工作需求,但总觉得,还是对线程没有一个系统的概念,所以,查阅了一些资料,理解那些大神和官方的资料,写这么一篇关于线程的文章 本来想废话一番,讲讲自己的经历 ...

  7. java增删改查_只会增删改查的Java程序员该如何发展

    首先,对于当前的Java程序员来说,要想在软件开发领域走得更远,应该做好三件事,其一是为自己设定一个主攻方向,其二是根据自身的知识基础和能力特点来制定学习计划,其三是注重行业发展趋势,积极拥抱新技术. ...

  8. 五子棋项目结束总结_五子棋项目总结

    五子棋项目是在我加入蓝杰后第一个接触的小型游戏项目,有着非同寻常的意义,所以本人也是相当的重视. 在胡哥的指导下,我们通过完成一个简单的登录界面,初步对桌面应用程序的开发有了一定的了解,即UI的相关知 ...

  9. java 高德地图路线规划_公交出行路线规划-出行路线规划-开发指南-Android 地图SDK | 高德地图API...

    公交路径规划可以根据起终点和公交换乘的数据,使用 BusRouteOverlay 画出公交路线图层,包括起终点和换乘点.另外也可以自定义起终点和换乘点的图标. 目前支持跨城公交路线规划,提供不同城市之 ...

  10. 项目经理论坛_做好项目经理,应该向华为学习

    疫情期间,众多公司经营受到影响,现金流难以为继,开始出现裁员潮,减薪潮,市场招聘需求也在下降. 但是,像华为这样的大厂,无疑要比普通中小企业稳定得多.日前华为还正常召开了新品发布会,一时间风光无两,登 ...

最新文章

  1. 量子通信是不是伪科学?潘建伟这样回应
  2. 【VMware虚拟化解决方案】VMware VSphere 5.1配置篇
  3. Math,random()返回区间内的随机数
  4. python dict()函数(用于创建一个字典)
  5. 手写vue2的Lazyload
  6. python 键盘输入数字_九宫格键盘输入
  7. python爬去百度百科词条_Python爬虫入门学习实践——爬取小说
  8. python3 x默认使用的编码_Python3编码问题(Python2请忽略)
  9. c语言程序设计教程上海交通,C语言程序设计教程 交通学习文学.pdf
  10. javascript中继承的几种方式
  11. 因接外包坐牢456天,我都经历了什么?
  12. 本悟法师:信仰,让孤独走开
  13. CV领域论文查找方法
  14. R语言逻辑回归、方差分析 、伪R平方分析
  15. 蚂蚁链API参考接口
  16. vue-element-admin/template+tornado(pyrestful)前后端分离框架实践(1)——自定义菜单和仪表盘
  17. android按键模拟测试
  18. Filecoin系列 - 源码分析 - CPU SHA扩展
  19. 【ISP】HSV(2)
  20. vue中使用v-if出现的值回显不了的问题

热门文章

  1. linux的常用命令
  2. 电力用高压锅炉管物理性能检验
  3. 2022-2027年中国网络娱乐行业发展监测及投资战略研究报告
  4. 对比分析偏差率的五个常见疑问
  5. 我的JAVA求学之路
  6. 七年级下册政治知识点总结
  7. 【HTML】简单的表格设计
  8. java拍照控件焦距问题,监控摄像头镜头焦距计算方法
  9. C++练习 - 字符转换
  10. 计算机硬盘的参数错误,电脑提示移动硬盘参数错误的解决方法