为什么这些变量只能为空?

时间:2014-10-26 00:48:30

标签: null priority-queue comparator

我有一个实现Comparator的类,但是n1和n2"只能为null"。这是班级:

   public class MyComparator implements Comparator<Node>{

        public int compare(Node n1, Node n2) {

            int n1Links = 0;
            int n2Links = 0;

            while(n1 != null){
                n1Links++;
                n1 = n1.previous;
            }
            while(n2 != null){
                n2Links++;
                n2 = n2.previous;
            }

            int n1count = 0;
            for (int i = 0; i < n1.word.length(); i++){
                if (n1.word.charAt(i) != target.charAt(i)){
                    n1count++;
                }
            }

            int n2count = 0;
            for (int i = 0; i < n2.word.length(); i++){
              if (n2.word.charAt(i) != target.charAt(i)){
                n2count++;
              }
            }

            int n1Total = n1Links + n1count;
            int n2Total = n2Links + n2count;

            if(n1Total > n2Total){
                return 1;
            }
            else if(n1Total < n2Total){
                return -1;
            }

            return 0;
        }       
    }

后来我有了这个:

Queue<Node> queue = new PriorityQueue<Node>(1000, new MyComparator());

使用比较器,然后我就开始向队列提供节点。

该程序是一个文字游戏求解器,旨在通过一次只更改1个字母来找到从单词X到单词Y的方法。比较器的目的是帮助进行一些排序。

知道为什么n1和n2只能为空?

谢谢!

1 个答案:

答案 0 :(得分:0)

我以为我错过了一些概念性的东西,但这是一个简单的错误:

当我增加n1Links和n2Links时,我最终将n1和n2设置为null。

因此,当我尝试取n1或n2的大小时,它们将为空。