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

您不能在方法调用中放置语句。

但是,一种选择可能是创建一个返回 a 的方法,Integer例如:

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 回答