我想比較一個Double值與TreeMap對象內的另一個double值。我在比較myPowerAvg和myMap.get(myMap.get(2))的行中收到以下錯誤。我不知道爲什麼我得到這個錯誤,因爲我比較兩個雙打(順便說一下,這個方法是在一個線程內執行的)。Android ClassCastException與TreeMap比較
12-10 22:12:30.524: ERROR/AndroidRuntime(1059): FATAL EXCEPTION: Thread-23
12-10 22:12:30.524: ERROR/AndroidRuntime(1059): java.lang.ClassCastException: java.lang.String
12-10 22:12:30.524: ERROR/AndroidRuntime(1059): at java.lang.Integer.compareTo(Integer.java:36)
12-10 22:12:30.524: ERROR/AndroidRuntime(1059): at java.util.TreeMap.cmp(TreeMap.java:1317)
12-10 22:12:30.524: ERROR/AndroidRuntime(1059): at java.util.TreeMap.get(TreeMap.java:1282)
12-10 22:12:30.524: ERROR/AndroidRuntime(1059): at com.community.HomeActivity.setTopUsers(HomeActivity.java:159)
12-10 22:12:30.524: ERROR/AndroidRuntime(1059): at com.community.HomeActivity.access$0(HomeActivity.java:136)
12-10 22:12:30.524: ERROR/AndroidRuntime(1059): at com.community.HomeActivity$4.run(HomeActivity.java:127)
代碼:
if(myPowerAvg < myMap.get(myMap.firstKey())){
TextView view = (TextView)findViewById(R.id.firstPlace);
}else{
TextView view = (TextView)findViewById(R.id.firstPlace);
view.setText("First Place: \n" + myMap.firstKey() + " " +
" at " + myMap.get(myMap.firstKey()));
}
if(myPowerAvg < myMap.get(myMap.get(2)) && myPowerAvg > myMap.get(myMap.firstKey())){
TextView view = (TextView)findViewById(R.id.secondPlace);
view.setText("Second Place: \n" + AppStatus.mUserName + " " +
" at " + myPowerAvg;
}else{
TextView view = (TextView)findViewById(R.id.secondPlace);
view.setText("Second Place: \n" + myMap.get(2) + " " + " at " +
myMap.get(myMap.get(2)));
}
if(myPowerAvg < myMap.get(myMap.get(2)) && myPowerAvg > myMap.get(myMap.firstKey())){
TextView view = (TextView)findViewById(R.id.secondPlace);
view.setText("Second Place: \n" + AppStatus.mUserName + " " + " at "
+ myPowerAvg);
}else{
TextView view = (TextView)findViewById(R.id.secondPlace);
view.setText("Second Place: \n" + myMap.get(2) + " " + " at " +
myMap.get(myMap.get(2)));
}
哪一行是'HomeActivity.java'行159?這個例外特別說明你正在試圖將'String'轉換爲'Integer'(顯然,你不能)。 –
我的猜測是你沒有在你的TreeMap變量的聲明中提供類型參數。不知何故,你比較一個字符串,它期望一個整數(或反之亦然?),並且編譯器不捕捉它。我同意@MДΓΓБДLL關於從哪裏開始追蹤這件事。如果您還發布了myMap的聲明,這將有所幫助。 –
第159行是if(myPowerAvg myMap.get(myMap.firstKey()))。這裏是treemap聲明:TreeMap myMap = new TreeMap (); –
user836200