4.26打卡
结对作业剩余代码
• 所花时间:5
• 代码行数:132
• 博客容量:1
• 代码如下:
package com.example.subway.util;
import android.app.Application;
import android.content.Context;
public class MyApp extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public static Context getContext() {
return context;
}
}
package com.example.subway.util;
import java.util.ArrayList;
import java.util.List;
public class Station {//相同的站但在不同线上 ,会重复
private int id;//在一条线中的id,表示一条线的站的顺序,从0开始
private String name;
private Line inWhichLine;//几号线
private List<Line> transferLine =new ArrayList<Line>();//可换乘的线 包括所在线
public int getId(){
return id;
}
public void setId(int Id){
this.id=Id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public Line getInWhichLine(){
return inWhichLine;
}
public void setInWhichLine(Line l){
this.inWhichLine=l;
}
public List<Line> getTansferLine(){
return transferLine;
}
public void addTansferLine(Line l) {
this.transferLine.add(l);
}
}
package com.example.subway.util;
import android.content.res.AssetManager;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class DataBuild {
public static int totalStaion = 0;
public static int totalLine = 0;
public static List<Line> lineList=new ArrayList<Line>();
public static List<Station> stationList=new ArrayList<Station>();//重复存不同线上的同一个站
public static List<Station> CanTransferStationList=new ArrayList<Station>();//不重复出现不同线上的同一站
public static void initialize() {
if (lineList.isEmpty() || stationList.isEmpty() || CanTransferStationList.isEmpty()) {
bulid();
}
}
private static void bulid(){
try {
String filePath = "/data/data/com.example.subway/files/地铁线路信息.txt";
FileInputStream fin = new FileInputStream(filePath);
InputStreamReader reader = new InputStreamReader(fin,"UTF-8");//字符流
BufferedReader buffReader = new BufferedReader(reader);
// AssetManager assetManager = MyApp.getContext().getAssets(); // 你可能需要自定义一个MyApp类来获取Context
// InputStream inputStream = assetManager.open("地铁线路信息.txt");
// InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
// BufferedReader buffReader = new BufferedReader(reader);
String strTmp = "";
while((strTmp = buffReader.readLine())!=null){
totalLine++;
Line l = new Line();
int sid=0;
String[] ts=strTmp.split(" ");
for(String t:ts) {
if((t.charAt(t.length()-1)=='线')||(t.charAt(0)>='1'&&t.charAt(0)<'9')){//线名
l.setName(t);
lineList.add(l);
}
else{//站
Station s=new Station();
s.setName(t);
s.setInWhichLine(l);
s.addTansferLine(l);
s.setId(sid);
int i;
int circle=0;
l.setIsCircle(false);
for(i=0;i<l.getOneLineStation().size();i++){
if(l.getOneLineStation().get(i).getName().equals(s.getName())){
l.setIsCircle(true);
circle=1;
//System.out.println(l.getName()+"circle");
break;
}
}
if(circle==0){
for(i=0;i<stationList.size();i++){
if(stationList.get(i).getName().equals(t)){//station exist
stationList.get(i).addTansferLine(l);
stationList.get(i).getInWhichLine().getOneLineStation().set(stationList.get(i).getId(), stationList.get(i));//更新了可换乘线 的新站 到原来的位置
s.addTansferLine(stationList.get(i).getInWhichLine());
if(stationList.get(i).getTansferLine().size()==2)
CanTransferStationList.add(s);
}
}
stationList.add(s);
l.addOneLineStation(s);
sid++;
}
}
// System.out.println(l.getName()+":"+l.getOneLineStation());
}
}
buffReader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static List<String> mainFunc(int chose, String start, String end) {
bulid();
initialize();
// for(Line lt:lineList){
// System.out.print(lt.getName()+":");
// for(Station st:lt.getOneLineStation())
// System.out.print(st.getId()+st.getName()+"在"+st.getInWhichLine().getName()+" "+st.getTansferLine().size()+" ");
// System.out.println();
// }
System.out.println("请选择功能 ,1查看所有线路信息,2开始查询路线");
List<String> ls=new ArrayList<>();
String result = "";
if (chose == 1) {
for (int i = 0; i < lineList.size(); i++) {
result="";
System.out.println(lineList.get(i).getName());
result += lineList.get(i).getName();
for (int j = 0; j < lineList.get(i).getOneLineStation().size(); j++) {
System.out.print(lineList.get(i).getOneLineStation().get(j).getName() + " ");
result += lineList.get(i).getOneLineStation().get(j).getName() + " ";
}
System.out.println();
result+="\n";
ls.add(result);
}
} else {
System.out.print("请输入起始站名与终点站名,以空格分隔:");
Dijkstra.getRoad(start, end);
result=Dijkstra.resultstring;
ls.add(result);
}
return ls;
}
}
浙公网安备 33010602011771号