java - 谁能解释下面的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());
}
}
解决方案
对于二维数组 adjMatrix 中的每个 Integer,您都在 StringBuilder 中附加它的值(实际上只是连接字符串)。
推荐阅读
- swift - 我在 SpriteKit 中的 SKVideoNode 在场景加载时自动播放
- google-cloud-platform - 如何从另一个 CF 中请求 Google Cloud Function (CF)?
- c++ - 来自 Voronoi 的 Delaunay with boost:缺少具有非积分点坐标的三角形
- java - 错误:SQLiteLog:(1)没有这样的列:nometprenom
- google-maps-android-api-2 - 如何取消谷歌地图的任何移动?
- javascript - ReferenceError mongodb MapReduce
- c - 如何在 C 中安全地声明 16 位字符串文字?
- git - 更改旧 git 标签的版本控制方案
- c - 在 ppm 文件中写入字符/文本
- laravel - php artisan migrate 命令错误:Illuminate\Database\QueryException:SQLSTATE[HY000] [2002] 连接被拒绝