首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从字节/布尔数组加载,因为"BlackWhite.marked“为null

无法从字节/布尔数组加载,因为"BlackWhite.marked“为null
EN

Stack Overflow用户
提问于 2020-10-08 01:00:18
回答 1查看 171关注 0票数 0

当我运行下面的代码时,我一直从这篇文章的标题中得到错误,尽管我不知道为什么。我试过了:Arrays.fill(marked, false);,我正在尝试找出有多少白色节点和黑色节点,连接blacknodes[]中不存在的节点。

代码语言:javascript
复制
public class BlackWhite {
    private static boolean[] marked;

public BlackWhite(Graph G, int s) {
    marked = new boolean[G.V()];
    dfs(G, s);
}

public static int count(Graph G, int[] blacknodes) {
    int rw_count = 0;

    for (int w : G.adj(blacknodes.length)) {
        if (marked(w)) {
            rw_count++;
        }
    }

    return rw_count;
}

private void dfs(Graph G, int v) {
    marked[v] = true;
    for (int w : G.adj(v)) {
        if (!marked[w]) {
            dfs(G, w);
        }
    }
}

public static boolean marked(int v) {
    return marked[v];
}

public static void main(String[] args) {
    Graph G = new Graph(3);
    G.addEdge(1, 2);
    G.addEdge(4, 1);
    G.addEdge(1, 8);

    System.out.println(BlackWhite.count(G, new int[] { 1 })); // should print 3
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-08 01:49:53

您正在BlackWhite类的构造器中初始化marked数组。但在main方法中,您从未调用过new BlackWhite()。因此,当您调用静态count方法时,您的marked数组仍然为空。

您应该像这样更改您的count方法。

代码语言:javascript
复制
public static int count(Graph G, int[] blacknodes) {
    int rw_count = 0;
    if(marked == null) marked = new boolean[G.V()];

    for (int w : G.adj(blacknodes.length)) {
        if (marked(w)) {
            rw_count++;
        }
    }

    return rw_count;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64248837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档