2016-10-08 32 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

答えを得るためにマップを1回呼び出すことはできません。それは単に地図がデザインするものではありません。

あなたがしなければならないことは、ローマ数字の読み方をどのように学んだのか考えていることです。 10、1、5の意味でマップ内を調べることができるシンプルな例XIVを取ってください.10> 1であるため、結果に10を追加します(結果= 10)。次に、1 < 5として、5から1を減算し、結果に加算します(結果= 14)。

これは、これを必要なコードに変換するのに十分なはずです。

0

数値がハッシュマップに存在する場合は、数値が返されます。それ以外の場合はnullです。 "MDCLXVI"に対してnumeric.get(inputstr)を呼び出すと、実際の呼び出しはnumeric.get( "MDCLXVI")ですが、 "MDCLXVI"はハッシュに存在しないのでnullを返します。

直接numeric.get(inputstr)を実行する代わりに、inputstrを解析し、解析された各ローマ字を.getに渡して計算する必要があります。見てください:Converting Roman Numerals To Decimal

関連する問題