2012-08-02 44 views
0

我使用的是當前細節格式爲HashMap的的Eclipse:詳細格式錯誤:<key>不能被解析爲一個變量

key + "-" + value 

當我調試代碼..

import java.util.HashMap; 


public class Test1 
{ 
    public static void main(String[] args) 
    { 
     HashMap<String, Integer> wordcount = new HashMap<String, Integer>();  

     wordcount.put("foo", 1); 
     wordcount.put("bar", 1); 

     System.out.println("test"); // set a breakpoint here 

    } 
} 

Eclipse在說變量標籤..

Detail formatter error: 
    key cannot be resolved to a variable 
    value cannot be resolved to a variable 

其實我希望看到HashMap的值,當breakpoin t停在System.out.println ......不僅僅是wordcount HashMap<K,V> (id=16),而是它的內容。

+2

郵更多的代碼。 – kosa 2012-08-02 15:32:02

+0

看來你正在使用鍵和值作爲變量而沒有定義它們。 – SiB 2012-08-02 16:35:53

+0

@BharatSinha,也許我使用了錯誤的方法,那麼當我想要在斷點處停下來的時候更好地查看hashmap的內容時,我應該怎麼做? – Howard 2012-08-03 06:51:09

回答

1

詳細格式化程序用於爲您提供對象(及其屬性)的字符串表示形式,而不是局部變量或方法參數。 HashMap沒有字段「key」和「value」,所以你的代碼沒有意義。

我想你在另一個調試會話期間會把一些局部變量(在像HashMap.put()這樣的方法中)的細節格式化器弄糊塗了。

爲了得到一些正確工作的代碼,它可能是最簡單的方法來首先在像put()這樣的HashMap方法中設置一個斷點,並且當你點擊斷點時實現細節格式化程序。這樣你可以直接驗證你的新代碼。

爲包含HashMap實施例詳細地格式化:

StringBuilder buffer = new StringBuilder(); 
buffer.append("entries: ").append(this.size()).append("\n"); 
for (Map.Entry entry : entrySet()) { 
    buffer.append("key: ").append(entry.getKey().toString()).append(", value:").append(entry.getValue().toString()).append("\n"); 
} 
return buffer.toString(); 

這將有你例如以下輸出:

entries: 2 
key: foo, value:1 
key: bar, value:1 
+0

也許我使用了錯誤的方法,那麼當我想要在斷點處停下來的時候更好地查看hashmap的內容時該怎麼辦? – Howard 2012-08-03 06:50:52

+0

我已經添加了一個示例。您應該可以隨意修改該代碼。 – Bananeweizen 2012-08-03 12:45:21

+0

謝謝,我接受。我只是想知道爲什麼它們不是默認的,它使調試更容易。 – Howard 2012-08-03 15:52:44

相關問題