해쉬맵 예제 : 도시 이름으로 도시 정보 검색하는 프로그램


import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.StringTokenizer;

//2. 다음을 프로그래밍 하시오. 
//도시 이름, 위도, 경도 정보를 가진 Location 클래스를 작성하고, 
//도시 이름을 '키'로 하는 HashMap<String, Location> 컬렉션을 만들고, 
//사용자로부터 입력 받아 4개의 도시를 저장하라. 
//그리고 도시 이름으로 검색하는 프로그램을 작성하라.

public class Blog {
	public static void main(String[] args) {
		new Byul();
	}
}
class Location {
	String city;
	int w, g;
	Location(String c, int w, int g) {
		this.city = c;
		this.w = w;
		this.g = g;
	}
	@Override
	public String toString() {
		return city + " " + w + " " + g;
	}
}
class Byul {
	Scanner sc;
	Map<String, Location> map;
	Byul() {
		sc = new Scanner(System.in);
		map = new HashMap<>();
		main();
		sc.close();
	}
	void main() {
		System.out.println("도시, 경도, 위도를 입력하세요.");
		String s;
		String[] tokens = new String[3];
		StringTokenizer st;
		while (map.size() < 4) {
			System.out.print(">> ");
			st = new StringTokenizer(sc.nextLine(), ", ");
			
			if (st.countTokens() != 3) {
				System.out.println("오류: 도시, 경도, 위도 3개 항목만 공백으로 분리해서 입력하세요.");
				continue;
			}
			for (int i = 0; st.hasMoreTokens(); i++) {
				tokens[i] = st.nextToken();
			}
			if (isNum(tokens[0])) {
				System.out.println("오류: 도시 이름은 문자로 입력하세요.");
				continue;
			}
			if (!isNum(tokens[1])) {
				System.out.println("오류: 경도는 숫자로 입력하세요.");
				continue;
			}
			if (!isNum(tokens[2])) {
				System.out.println("오류: 위도는 숫자로 입력하세요.");
				continue;
			}
			map.put(tokens[0], new Location(tokens[0], Integer.parseInt(tokens[1]), Integer.parseInt(tokens[2])));	
		}
		System.out.println("----------------------------------");
		for (String t : map.keySet()) {
			System.out.println(map.get(t));
		}
		System.out.println("----------------------------------");
		while (true) {
			System.out.print("도시 이름 >> ");
			s = sc.next();
			if (s.contains("그만")) {
				break;
			}
			if (map.get(s) != null) {
				System.out.println(map.get(s));
			} else {
				System.out.println(s + "는(은) 없습니다.");
			}
		}
	}
	
	boolean isNum(String s) {
		try {
			Integer.parseInt(s);
		} catch (Exception e) {
			return false;
		}
		return true;
	}
}
//도시, 경도, 위도를 입력하세요.
//
//>> 서울, 37, 126
//>> LA, 34, -118
//>> 파리, 2, 48
//>> 시드니, 151, -33
//----------------------------------
//서울 37 126
//LA 34 -118
//파리 2 48
//시드니 151 -33
//----------------------------------
//도시 이름 >> 피리
//피리는 없습니다.
//도시 이름 >> 파리
//파리 2 48
//도시 이름 >> 그만

댓글

이 블로그의 인기 게시물

substring 예제: 문자열을 입력 받아 한 글자씩 회전시켜 모두 출력하는 프로그램을 작성하라

단체 채팅 구현