0

タイプ Hashmap <String,Integer> の変数があります。

この場合、整数値は、フラグ変数の値に応じて何らかの操作を行う必要がある場合があります。私はこうやった...

Hashmapvariable.put( somestring,
    if (flag_variable) {
     //manipulation code goes here
     new Integer(manipulated value);
    } else {
     new Integer(non-manipulated value);
    }
);

しかし、私はエラーが発生します:

トークンの構文エラー、構造体の配置が間違っています。

Hashmapvariable.put 呼び出しで。

また、別のエラーが発生します

トークン ")" の構文エラーです。このトークンを削除してください。

最後の ");" ライン。しかし、")" を削除することはできません。これは put メソッド呼び出しの閉じ括弧です。

わかりません。私は何の間違いをしているのですか?

4

3 に答える 3

7
 new Integer(flag_variable ? manipulated value : non-manipulated value)

トリックはありますか

編集:Java 5では、書くこともできると思います

hashmap.put(someString, flag_variable ? manipulated value : non-manipulated value)

オートボクシングのため。

于 2008-11-23T09:27:23.280 に答える
4

メソッド呼び出しにステートメントを配置することはできません。

Integerただし、1 つのオプションは、次のようなを返すメソッドを作成することです。

private Integer getIntegerDependingOnFlag(boolean flag)
{
    if (flag)
        return new Integer(MANIPULATED_VALUE);
    else
        return new Integer(NON-MANIPULATED_VALUE);
}

次に、次のような呼び出しを行うことができます。

hashmap.put(someString, getIntegerDependingOnFlag(flag));
于 2008-11-23T09:23:11.697 に答える
0

これはスキームではないため、if ステートメントは値に評価されません。他の誰かが言ったように、tri-if-thing (名前は何らかの理由で私をエスケープします) を使用するか、関数を作成する必要があります。

于 2008-11-23T09:41:09.537 に答える