我的图形代码不是 运行 也没有抛出任何错误?

My graph code not running and neither throwing any error?

我正在尝试实现一个图表。我无法理解为什么我的代码不起作用。我试着看看哪里出错了,但无法弄清楚,我的 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 class 有一个名为 V 的字段。还有一个参数 int V 由您的构造函数接收。它们不是同一个变量。除非您初始化字段 V,否则它将为零。

所以这个循环

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

立即退出。

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

this.V = V;

在你的构造函数中。

您需要打印一整行来管理 y 轴并通过 adjList 中的元素数量限制 i:

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

这将输出以下内容:

1 2
2
0 3
3

如果你想旋转它,你只需要改变添加参数:)

您需要在构造函数中初始化 V,如:this.V = V;。另一件事是方法 printGraph 不需要接收 Graph 变量,你可以这样写:

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