简体   繁体   English

谁能解释下面 for 循环中发生的事情?

[英]Can anyone explain what's happening in below for loop?

My expected output is我的预期输出是

4 vertices, 4 edges 

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

And it works fine without any problem but I don't know what's happening inside the second for loop in the following toString() method statement.它工作正常,没有任何问题,但我不知道在以下toString()方法语句中的第二个for 循环中发生了什么。

can anyone say what is going on inside this method especially in for loop??任何人都可以说这个方法内部发生了什么,尤其是在for循环中? And also why this program uses StringBuilder instead of String data type.还有为什么这个程序使用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();
        }

Here is my full graph program.这是我的完整图形程序。

    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());
    }
}

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM