java - 我的图形代码没有运行并且没有抛出任何错误?

标签 java graph-theory

我正在尝试实现一个图表。我无法理解为什么我的代码不起作用。我试图看看哪里出了问题,但无法弄清楚,而且我的IDE也没有给出任何错误。 我是初学者,有人可以告诉我我在哪里以及为什么吗? 我在下面发布我的代码。

import java.util.*;
class Graph {

    private int V;
    private LinkedList<Integer>[] adjList ;

    Graph(int V) {

        adjList = new LinkedList[V];

        for(int i=0 ; i<V ; i++) {
            adjList[i] = new LinkedList<Integer>();
        }
    }

    public void addEdge(int v, int w) {
        adjList[v].add(w);
    }

    public void printGraph(Graph graph) {
        for(int i=0 ; i<graph.V ; i++) {
            for(Integer pCrawl : graph.adjList[i]){
                System.out.print(pCrawl+" ");
            }
        }
    }

    public static void main(String[] args) {
        Graph g = new Graph(4); 

        g.addEdge(0, 1); 
        g.addEdge(0, 2); 
        g.addEdge(1, 2); 
        g.addEdge(2, 0); 
        g.addEdge(2, 3); 
        g.addEdge(3, 3); 

        g.printGraph(g);
    }
}

最佳答案

您的Graph类有一个名为V的字段。还有一个由构造函数接收的参数int V。它们不是同一个变量。除非您初始化字段 V,否则它将为零。

所以这个循环

for(int i=0 ; i<graph.V ; i++)

立即退出。

将字段 V 设置为构造函数中接收到的变量 V 的方法是添加

this.V = V;

在你的构造函数中。

关于java - 我的图形代码没有运行并且没有抛出任何错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58040269/

相关文章:

java - 将文件名中的日期模式与滚动频率解耦

java - 如何说服其他开发人员不要忽略异常?

java - 使用java进行for循环时间转换

python - 查找坐标列表是否形成循环

c++ - 图补充的这些代码片段有什么区别?

java - 使用命令提示符安装 Java 并设置 JAVA_HOME 路径

java - JPA无法更新实体

algorithm - 分区彩色网格

algorithm - 特定类型图中的最长路径

java - 使用 Dijkstra 检测多条最短路径