0

好的,我可能会发疯,但我以前从未遇到过这个错误。

这不编译:

我得到的错误是:“找不到访问的符号变量”

已编辑

这是整个功能:

public void depthFirstTraverse(Node startNode) {
    Stack<Node> myStack = new Stack<Node>();
    myStack.push(startNode);

    while (!myStack.empty()) {
        Node top = myStack.pop();
        top.visited = true;
        System.out.println(top.item);
        for (int i = 0; i < top.getAdjList().size() ; i++) {
            //Node temp = (Node)top.getAdjList().get(i);
            if (!(Node)top.getAdjList().get(i).visited) {
                myStack.push((Node)top.getAdjList().get(i));
            }
        }
        top.visited = false;
    }

}

这部分不起作用

if (!top.getAdjList().get(i).visited) {  // this line gives me an error

这样做:

for (int i = 0; i < top.getAdjList().size() ; i++) {
            Node temp = (Node)top.getAdjList().get(i);
            if (temp.visited) {
                myStack.push(temp);
            }
        }

为什么会这样?

4

1 回答 1

2

if (!(Node)top.getAdjList().get(i).visited)看起来您正在尝试将 aboolean转换为 aNode

也许试试这个:

if (!((Node)top.getAdjList().get(i)).visited)然后演员会检查visited财产

于 2012-09-13T02:05:58.783 回答