首页 > 解决方案 > 谁能解释下面的for循环发生了什么?

问题描述

我的预期输出是

4 vertices, 4 edges 

0: 0 1 0 1
1: 1 0 1 0 
2: 0 1 0 1 
3: 1 0 1 0 

它可以正常工作,没有任何问题,但我不知道在下面的toString()方法语句中的第二个for 循环中发生了什么。

谁能说出这个方法内部发生了什么,尤其是在for循环中?以及为什么这个程序使用StringBuilder而不是String数据类型。


 public String toString() {
            StringBuilder sb = new StringBuilder();
            sb.append(V + " vertices, " + E + " edges " + "\n");
            for(int v = 0; v < V; v++) {
                sb.append(v + ": ");
                for(int w : adjMatrix[v]) {
                    sb.append(w + " ");
                }
                sb.append("\n");
            }
            return sb.toString();
        }

这是我的完整图表程序。

    public class Graph {

    private int V; // number of vertices in Graph
    private int E; // number of edges in Graph
    private int[][] adjMatrix;

    public Graph(int nodes) {
        this.V = nodes;
        this.E = 0;
        this.adjMatrix = new int[nodes][nodes];
    }

    public void addEdge(int u, int v) {
        adjMatrix[u][v] = 1;
        adjMatrix[v][u] = 1;  // because it is an undirected graph
        E++;
    }

    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(V + " vertices, " + E + " edges " + "\n");
        for(int v = 0; v < V; v++) {
            sb.append(v + ": ");
            for(int w : adjMatrix[v]) {
                sb.append(w + " ");
            }
            sb.append("\n");
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        Graph g = new Graph(4);
        g.addEdge(0, 1);
        g.addEdge(1, 2);
        g.addEdge(2, 3);
        g.addEdge(3, 0);
        System.out.println(g.toString());
    }
}

标签: javaarraysfor-loopgraph

解决方案


对于二维数组 adjMatrix 中的每个 Integer,您都在 StringBuilder 中附加它的值(实际上只是连接字符串)。


推荐阅读