我有一个Hashmap <String,Integer <!> gt;。

类型的变量

在这种情况下,Integer值可能必须根据flag变量的值进行一些操作。我这样做了......

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

但是我收到了一个错误:

  

令牌上的语法错误,放错位置   构建体。

在Hashmapvariable.put调用。

我还得到另一个错误

  

令牌<!>上的语法错误;)<!>“;”,删除此项   令牌。

在最后<!>“;); <!>”;线。但是我无法删除<!>“;”<!>“; - 它是put方法调用的右括号。

我不懂。我在做什么错误?

有帮助吗?

解决方案

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

但是,一个选项可能是创建一个返回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));

其他提示

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

技巧

编辑: 在Java 5上,我想你也可以写

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

由于自动拳击。

这不是方案,因此如果语句不评估为值。你必须使用tri-if-thing(这个名字现在由于某种原因逃脱了我)或创建一个函数,就像其他人说的那样。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top