关于双java对象
下面的代码出现编译错误“nota statement”。不知道怎么了。inMax是一个hasmap。tcharge是一个字符串,它是一个键。这是一个有效的声明吗关于双java对象,java,string,double,Java,String,Double,下面的代码出现编译错误“nota statement”。不知道怎么了。inMax是一个hasmap。tcharge是一个字符串,它是一个键。这是一个有效的声明吗 Double tMaxCharge= (Double)inMax.get(tCharge); 看起来不错,请检查前面的语句。Java编译器并非总是像它所认为的那样有用。看看它指向你的地方附近的其他线条。这个问题以前可能是在线的 我同意objects的回答,但为了避免强制转换,在这种情况下,您可以使用泛型吗,例如: HashMap<
Double tMaxCharge= (Double)inMax.get(tCharge);
看起来不错,请检查前面的语句。Java编译器并非总是像它所认为的那样有用。看看它指向你的地方附近的其他线条。这个问题以前可能是在线的 我同意objects的回答,但为了避免强制转换,在这种情况下,您可以使用泛型吗,例如:
HashMap<String,Double> myMap = new HashMap<String,Double>();
myMap.put("foo", 3.14); //or new Double(3.14)
myMap.get("foo") //evaluates to type Double (and can be autoboxed to a double)
HashMap myMap=newhashmap();
myMap.put(“foo”,3.14)//或新双人(3.14)
myMap.get(“foo”)//计算结果为Double类型(并且可以自动装箱为Double)
显然,您编写的代码类似于:
if (someCondition)
Double tMaxCharge= (Double)inMax.get(tCharge);
else
doSomething();
正如@objects所说,这不是有效的Java语法。LocalVariableDeclarationStatement
是BlockStatement
,但不是语句
,如果语句需要语句
)
但是如果你仔细想想,一个localvariabledclarationstatement
声明它不在块中是没有意义的。声明的范围将立即结束,因此无法使用声明的标识符。(它必须立即结束,否则会出现各种语言异常。)我之前有一个if语句if Double tMaxCharge=(Double)inMax.get(tCharge);如果{Double tMaxCharge=(Double)inMax.get(tCharge);}我刚刚将这个语句改为括在大括号中,它就开始工作了。否则,我不知道为什么它在大括号中工作。因为您正在定义一个局部变量(tMaxCharge),它需要在一个块中。如果您在之前定义了tMaxCharge,那么您就不需要大括号了。@objects:好奇的是,在没有其他语句使用它的块中,双重声明和初始化有什么用?