Skip to content

Latest commit

 

History

History
102 lines (90 loc) · 3.96 KB

File metadata and controls

102 lines (90 loc) · 3.96 KB

csv 파일

import java.io.*;
import java.util.*;

public class Main {
    static Map<String, SubwayInfo> SubwayMap;

    public static void main(String[] args) {
        SubwayMap = new HashMap<>();

        // CSV 파일에서 데이터 읽어서 SubwayMap에 넣기
        readSubwayInfoFromCSV("subwayinfo.csv");

        // SubwayMap에서 데이터 확인
        String key = "동대입구역";
        RegionType region = RegionType.CAPITAL;
        SubwayInfo subwayInfo = SubwayMap.get(key);

        if (subwayInfo != null && subwayInfo.region == region) {
            System.out.println("Subway found:");
            System.out.println("Name: " + subwayInfo.name);
            System.out.println("Latitude: " + subwayInfo.latitude);
            System.out.println("Longitude: " + subwayInfo.longitude);
            System.out.println("Subway Lines:");
            for (SubwayLine line : subwayInfo.subwayLines) {
                System.out.println("- " + line.getName());
            }
        } else {
            System.out.println("Subway information not found.");
        }
    }

    public static void readSubwayInfoFromCSV(String filename) {
        try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "UTF-8"))) {
            String line;
            while ((line = br.readLine()) != null) {
                String[] data = line.split(",", -1); // -1을 설정하여 빈 문자열도 포함시킴
                if (data.length >= 5) {
                    String name = data[0].trim();
                    Double latitude = parseDoubleOrDefault(data[2].trim(), null);
                    Double longitude = parseDoubleOrDefault(data[3].trim(), null);
                    RegionType region = parseRegionTypeOrDefault(data[1].trim(), null);
                    String lineName = data[4].trim();

                    if (name.isEmpty() || latitude == null || longitude == null || region == null || lineName.isEmpty()) {
                        System.out.println("Invalid data format: " + line);
                        continue;
                    }

                    // Check if the subway station already exists in the map
                    if (SubwayMap.containsKey(name)) {
                        SubwayInfo subwayInfo = SubwayMap.get(name);
                        SubwayLine subwayLine = getSubwayLineByName(lineName);
                        if (subwayLine != null) {
                            subwayInfo.addSubwayLine(subwayLine);
                        } else {
                            System.out.println("Unknown subway line: " + lineName);
                        }
                    } else {
                        SubwayLine subwayLine = getSubwayLineByName(lineName);
                        if (subwayLine != null) {
                            SubwayInfo subwayInfo = new SubwayInfo(name, latitude, longitude, region, subwayLine);
                            SubwayMap.put(name, subwayInfo);
                        } else {
                            System.out.println("Unknown subway line: " + lineName);
                        }
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SubwayLine getSubwayLineByName(String lineName) {
        for (SubwayLine line : SubwayLine.values()) {
            if (line.getName().equals(lineName)) {
                return line;
            }
        }
        return null;
    }

    public static Double parseDoubleOrDefault(String s, Double defaultValue) {
        try {
            return Double.parseDouble(s);
        } catch (NumberFormatException | NullPointerException e) {
            return defaultValue;
        }
    }

    public static RegionType parseRegionTypeOrDefault(String s, RegionType defaultValue) {
        try {
            return RegionType.valueOf(s);
        } catch (IllegalArgumentException | NullPointerException e) {
            return defaultValue;
        }
    }
}