关于双java对象

关于双java对象,java,string,double,Java,String,Double,下面的代码出现编译错误“nota statement”。不知道怎么了。inMax是一个hasmap。tcharge是一个字符串,它是一个键。这是一个有效的声明吗 Double tMaxCharge= (Double)inMax.get(tCharge); 看起来不错,请检查前面的语句。Java编译器并非总是像它所认为的那样有用。看看它指向你的地方附近的其他线条。这个问题以前可能是在线的 我同意objects的回答,但为了避免强制转换,在这种情况下,您可以使用泛型吗,例如: HashMap<

下面的代码出现编译错误“nota statement”。不知道怎么了。inMax是一个hasmap。tcharge是一个字符串,它是一个键。这是一个有效的声明吗

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:好奇的是,在没有其他语句使用它的块中,双重声明和初始化有什么用?