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;
	}
}
posted @ 2024-04-26 20:18  aallofitisst  阅读(7)  评论(0)    收藏  举报