2017-10-12 59 views
0

調試的foreach,當我有這樣的代碼:誤差的Hashmap

for (RoomProperties RP : roomHashMap.values()) { 
    canvas.drawRect(RP.left, RP.top, RP.right, RP.bottom, snowWhite); 
} 

它的正確編譯。但是矩形根本不會被繪製,所以我進入調試模式,果然有這些錯誤:

RP.left找不到局部變量「RP」 RP.right找不到局部變量「RP」

現在,這實際上令人困惑。假設我沒有得到每個權利,但爲什麼編譯和運行?

什麼是foreach的正確方法和編譯器不報告錯誤的問題(我可能忽略了警告)?

+0

它與gradle有什麼關係? – Opal

+0

對不起,我認爲gradle是一個在android studio中使用的綜合編譯器... – VictorCharlie23

+0

Like Per Huss寫道,那就是調試器找不到有關變量名稱的信息。一個(最近的)標準的Android Studio項目,就像Version 2.0+一樣,只要你能自動[構建調試變體](https://developer.android.com/studio/run/index.html#changing-variant)不要明確地構建版本或修改配置。某些Gradle配置可能會出現一些問題..但是如果沒有更多的信息很難說清楚。這[有關使用Android Studio進行調試的問題](https://stackoverflow.com/q/37142275/3828957)可能會很有趣。 – makadev

回答

1

我懷疑找不到本地變量您看到的消息是調試器通知您它無法爲您解析本地變量。在這種情況下,它根本不是一個運行時問題,並且可以通過確保您使用「生成調試信息」或啓用類似選項來編譯您的java代碼來進行修復。這會爲編譯後的代碼添加額外的信息來幫助調試器。祝你好運!