我有一个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方法调用的右括号。
我不懂。我在做什么错误?
答案 0 :(得分:7)
new Integer(flag_variable ? manipulated value : non-manipulated value)
技巧
编辑: 在Java 5上,我想你也可以写
hashmap.put(someString, flag_variable ? manipulated value : non-manipulated value)
由于自动拳击。
答案 1 :(得分:4)
您不能在方法调用中放置语句。
但是,一个选项可能是创建一个返回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));
答案 2 :(得分:0)
这不是方案,因此如果语句不评估为值。你必须使用tri-if-thing(这个名字现在由于某种原因逃脱了我)或创建一个函数,就像其他人说的那样。