2010-03-03 74 views
0

我在下面的代碼中收到編譯錯誤「not a statement」。不知道有什麼問題。 inMax是一個hasmap。 tcharge是一個字符串,它是一個關鍵。這是一個有效的陳述嗎?關於Object to double java

Double tMaxCharge= (Double)inMax.get(tCharge); 

回答

5

看起來不錯,檢查之前的聲明。

+0

我有一個if語句之前 if Double tMaxCharge =(Double)inMax.get(tCharge); else 做些什麼 我只是將此語句更改爲括在大括號中,並且它開始工作 if Double tMaxCharge =(Double)inMax.get(tCharge); } 其他 做點事 不知道爲什麼它在大括號裏面工作。 – Arav 2010-03-03 05:08:47

+1

因爲你正在定義一個局部變量(tMaxCharge)它需要在一個塊中。如果你在之前定義了tMaxCharge,如果你不需要大括號。 – objects 2010-03-03 05:25:08

+1

@objects:只要好奇,在沒有其他語句使用它的塊中的Double聲明和初始化有什麼好處? – 2010-03-03 06:22:28

2

Java的編譯器並不總是像它認爲的那樣有幫助。看看附近的其他線路,它指向你。問題可能在之前。

我同意對象的答案,但要避免鑄造,可你只是用在這種情況下仿製藥,如:

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) 
+0

非常感謝信息 – Arav 2010-03-03 05:09:07

2

顯然,你的代碼是這樣的:

if (someCondition) 
    Double tMaxCharge= (Double)inMax.get(tCharge); 
else 
    doSomething(); 

正如@對象說,這不是有效的Java語法。一個LocalVariableDeclarationStatementBlockStatement但不是Statementif語句需要Statement)

但如果你想想看,一個LocalVariableDeclarationStatement它不是內Block是毫無意義的。聲明的範圍將立即結束,所以聲明的標識符不能使用。 (它必須立即結束,否則你會得到各種語言異常。)

+0

「然後」在Java? – Jijoy 2010-03-03 08:32:14

+0

ooops ...固定 – 2010-03-03 09:17:00