2017-01-01 116 views
-1

我正在解決DFS問題,所以我使用了ArrayList的數組。這裏是我的代碼如何在java中打印arrayList作爲字符串

ArrayList<Node> graph[] = new ArrayList[N+1]; 

     int u, v, w; 
     for (int i = 1; i <=N; i++){ 
      graph[i] = new ArrayList<Node>(); 
     } 

     for(int i=0;i<N-1;i++){ 

       u=sc.nextInt(); 
       v=sc.nextInt(); 
       w=sc.nextInt(); 


      graph[u].add(new Node(v,w)); 
      graph[v].add(new Node(u,w)); 

     } 
System.out.println(graph[1].get(0));----------(1) 

對於上面打印語句,我得到的輸出[email protected]。我不知道爲什麼我收到了這一點。 我輸入:

1 
3 
1 2 
1 3 
2 3 

plz幫助我如何從ArrayList中

編輯的陣列打印精確的輸出:Node類:

class Node { 
    static int i; 
    int distance; 

    Node(int i, int distance) { 
     this.i = i; 
     this.distance = distance; 
    } 
} 
+3

Object類的默認繼承方法'toString()'用於將節點轉換爲String。重寫Node類中的'toString()'方法。 – GurV

+0

@GurwinderSingh:我感覺後續問題來了... –

+0

Thanku @GurwinderSingh但仍然我得到了相同的輸出[節點@ 1db9742] –

回答

0

你必須覆蓋節點類toString()方法根據您的需要。

對於如 - 如果你想在你的類的文本表示只有距離,你可以這樣做 -

class Node { 
    static int i; 
    int distance; 

    Node(int i, int distance) { 
     this.i = i; 
     this.distance = distance; 
    } 

    @Override 
    public String toString() { 
     return Integer.toString(distance); // Change as per your needs 
    } 

} 

更多內容:

0

必須覆蓋toString方法Node類,所以System.out.println()方法可以用它來顯示你期待什麼。像這樣

class Node { 
    static int i; 
    int distance; 

    Node(int i, int distance) { 
     this.i = i; 
     this.distance = distance; 
    } 

    @Override 
    public String toString() { 
     return "Node{" + 
       "i=" + i + "," + 
       "distance=" + distance + 
       '}'; 
    } 
} 
+0

哦,我知道了我不能同時打勾答案srry @GurwinderSingh –

+0

如果您認爲其他答案更好,那麼您應該只接受一個解決問題的答案。相反,你可以把所有正確的答案(在你獲得20個名譽之後)上傳。快樂編碼:) –