为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕哥9229398 2023-08-16 10:53:13
我正在尝试实现一个图表。我无法理解为什么我的代码不起作用。我试图看看哪里出了问题,但无法弄清楚,而且我的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);    }}
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

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

所以这个循环

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

立即退出。

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

this.V = V;

在你的构造函数里面。


查看完整回答
反对 回复 2023-08-16
?
暮色呼如

TA贡献1853条经验 获得超9个赞

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


public void printGraph() {

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

        for(Integer pCrawl : adjList[i])

            System.out.print(pCrawl+" ");              

}


查看完整回答
反对 回复 2023-08-16
?
绝地无双

TA贡献1946条经验 获得超4个赞

您需要打印整行来管理 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


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


查看完整回答
反对 回复 2023-08-16
  • 3 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信