2016-10-08 3 views
-3

나는 학생이며 해시 맵 연습을하고있다. 정확한 소수로 변환하는 루프와 if 문 안에 로마 숫자를 입력 할 수 있습니다. 나는 MDCLXVI에 들어가고 싶다.어떻게이 해시 맵을 사용할 수 있습니까?

public static void main(String[] args) { 
    String inputstr; 
    Integer outputstr ; 

    System.out.println("Enter Roman Numneral(s): "); 
    Scanner sc = new Scanner(System.in); 
    inputstr = sc.nextLine().toUpperCase(); 

    HashMap<String, Integer> numeral = new HashMap<String, Integer>(); 

    numeral.put("IV", 4); 
    numeral.put("IX", 9); 
    numeral.put("XL", 40); 
    numeral.put("CD", 400); 
    numeral.put("CM", 900); 
    numeral.put("C", 100); 
    numeral.put("M", 1000); 
    numeral.put("I", 1); 
    numeral.put("V", 5); 
    numeral.put("X", 10); 
    numeral.put("L", 50); 
    numeral.put("D", 500); 

    outputstr = numeral.get(inputstr); 

    System.out.println(inputstr + " = " + outputstr); 
} 

내 질문은 : 가 어떻게 소수를 원하는하려면 하나 이상의 키를 입력 할 수 있습니까?

+0

무엇이 문제입니까? –

+0

원하는 십진수를 얻기 위해 둘 이상의 키를 입력하려면 어떻게해야합니까? –

답변

0

답변을 얻기 위해지도를 한 번 호출 할 수 없습니다. 그것은 단순히지도가 디자인 한 것이 아닙니다.

당신이해야 할 일은 로마 숫자를 어떻게 배웠는지 생각하는 것입니다. 10, 1, 5의 의미로 맵에서 찾을 수있는 간단한 예제 XIV를 가져옵니다. 10> 1이므로 결과에 10을 추가합니다 (결과 = 10). 그런 다음 1 < 5와 같이 5에서 1을 빼고 결과에 추가합니다 (결과 = 14).

필요한 코드로 변환하면 충분합니다.

0

키가 해시 맵에 존재하면 numeric.get은 값을 반환하고 그렇지 않으면 null입니다. "MDCLXVI"에 대해 numeric.get (inputstr)을 호출하면 실제 호출은 numeric.get ("MDCLXVI")이지만 "MDCLXVI"는 해시에 존재하지 않으므로 null을 반환하므로 해시가 작동하지 않습니다.

직접 numeric.get (inputstr)을 수행하는 대신 inputstr을 구문 분석해야하고 구문 분석 된 각 로마자를 .get에 전달하여 계산해야합니다. Look at : Converting Roman Numerals To Decimal

관련 문제