飞机地铁的java项目怎么做_个人项目-地铁出行路线规划(Java代码实现)
定义了一个主函数的类,用来运行整个程序。 // 解析 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代码实现)相关推荐
- 第一次做项目经理总结_华为项目经理必备技能
在华为做项目经理,经常会遇到各种项目和干系人,如果没有一套过硬的生存技能,是很难顺利进展项目的.下面的这10项技能都是基础款,来了解一下~(以下根据"PM圈子"文章,加上华为的项目 ...
- java中mvc事务_关于项目中的事务问题_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...
SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring MVC 分离了控制器.模型对象.分派器以及处理程序对象 ...
- java高深技术总结_一名25K以上的高薪Java程序员总结出的技术以及学习技能
原标题:一名25K以上的高薪Java程序员总结出的技术以及学习技能 总所周知,Java是目前使用最为广泛的网络编程语言之一. 它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点. 一般 ...
- java职业发展路线图_从程序员到CTO的Java技术路线图 JAVA职业规划 JAVA职业发展路线图 系统后台框架图、前端工程师技能图 B2C电子商务基础系统架构解析...
http://zz563143188.iteye.com/blog/1877266在技术方面无论我们怎么学习,总感觉需要提升自已不知道自己处于什么水平了.但如果有清晰的指示图供参考还是非常不错的,这样 ...
- java中动态输入_根据特定输入动态生成字符串的代码 - java
我想根据特定的输入动态生成字符串 如果输入= 1,则字符串输出= 00000 如果它= 10,则输出= 0000a 输入= 16,输出= 00010 等等 . 生成的字符串是从0到9的数字和从a到f的 ...
- 百度java的线程技术_自我提升(基础技术篇)——java线程简介
前言:虽然自己平时都在用多线程,也能完成基本的工作需求,但总觉得,还是对线程没有一个系统的概念,所以,查阅了一些资料,理解那些大神和官方的资料,写这么一篇关于线程的文章 本来想废话一番,讲讲自己的经历 ...
- java增删改查_只会增删改查的Java程序员该如何发展
首先,对于当前的Java程序员来说,要想在软件开发领域走得更远,应该做好三件事,其一是为自己设定一个主攻方向,其二是根据自身的知识基础和能力特点来制定学习计划,其三是注重行业发展趋势,积极拥抱新技术. ...
- 五子棋项目结束总结_五子棋项目总结
五子棋项目是在我加入蓝杰后第一个接触的小型游戏项目,有着非同寻常的意义,所以本人也是相当的重视. 在胡哥的指导下,我们通过完成一个简单的登录界面,初步对桌面应用程序的开发有了一定的了解,即UI的相关知 ...
- java 高德地图路线规划_公交出行路线规划-出行路线规划-开发指南-Android 地图SDK | 高德地图API...
公交路径规划可以根据起终点和公交换乘的数据,使用 BusRouteOverlay 画出公交路线图层,包括起终点和换乘点.另外也可以自定义起终点和换乘点的图标. 目前支持跨城公交路线规划,提供不同城市之 ...
- 项目经理论坛_做好项目经理,应该向华为学习
疫情期间,众多公司经营受到影响,现金流难以为继,开始出现裁员潮,减薪潮,市场招聘需求也在下降. 但是,像华为这样的大厂,无疑要比普通中小企业稳定得多.日前华为还正常召开了新品发布会,一时间风光无两,登 ...
最新文章
- 量子通信是不是伪科学?潘建伟这样回应
- 【VMware虚拟化解决方案】VMware VSphere 5.1配置篇
- Math,random()返回区间内的随机数
- python dict()函数(用于创建一个字典)
- 手写vue2的Lazyload
- python 键盘输入数字_九宫格键盘输入
- python爬去百度百科词条_Python爬虫入门学习实践——爬取小说
- python3 x默认使用的编码_Python3编码问题(Python2请忽略)
- c语言程序设计教程上海交通,C语言程序设计教程 交通学习文学.pdf
- javascript中继承的几种方式
- 因接外包坐牢456天,我都经历了什么?
- 本悟法师:信仰,让孤独走开
- CV领域论文查找方法
- R语言逻辑回归、方差分析 、伪R平方分析
- 蚂蚁链API参考接口
- vue-element-admin/template+tornado(pyrestful)前后端分离框架实践(1)——自定义菜单和仪表盘
- android按键模拟测试
- Filecoin系列 - 源码分析 - CPU SHA扩展
- 【ISP】HSV(2)
- vue中使用v-if出现的值回显不了的问题