2017-01-06 26 views
0

キーと値を使用せずにマップで除算または乗算を実行する方法。引数型の演算子*は未定義です。Map <String、Double>、int

以下の例では、私は開発者がマップオブジェクトであり、10を乗算して別のマップに割り当てたいと考えています。私はそのが正常に動作してダブルとしてEmployeeValをdecalaringが、私はそれを行うにしたいいけない場合セッター、開発者

Map<String, Double> EmployeeVal = company.getDep().getProject().get(0).getDeveloper()*100; 

のgetterメソッドを持つ

private Map<String, Double> Developer; 

、私は地図としてEmployeeValを宣言したいです。

+1

あなたが – brso05

+0

... '10'またはそのことについては任意の数でマップを乗算することはできませんそして、あなたは 'Map'インスタンスとして番号を割り当てることはできません。 – Guy

+0

'Developer 'に10を掛け合わせるとどうなりますか? Javaはそのようには機能しません。算術演算はプリミティブの数値型に対してのみ定義されます。 – hotzst

答えて

1

問題は、間違った命名規則から始まります。

あなたの開発者オブジェクトは「開発者」ではなく、文字列としてのキーを持つDoublesのコレクションです(名前は?)。

大文字で始まる変数を作成しないことをお勧めします。実際、開発者の変数の名前はdevelopersMapのようにする必要があります。

次に: すべての開発者のすべての値に10を掛けますか?

はい、それらのすべてをループを作るなどの値を掛ける場合:あなたが望む場合は、

for (Entry<String, Double> devEntry: developersMap.entrySet()){   
     devEntry.setValue(devEntry.getValue() *10.0D);   
    } 

しかし:

例1:

for (String devKey: developersMap.keySet()){    
     developersMap.put(devKey,developersMap.get(devKey) * 10.0D); 
    } 

例2一人の開発者だけに価値を乗算するには、キーでマップから価値を得てから、乗算してマップに戻す必要があります。

例として、2人の開発者 "John"と "Jane"があります。あなたは価値を増やしたいのですか?

「ジョン」:

developersMap.put("John",developersMap.get("John") * 10.0D); 
関連する問題