我有一个实现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只能为空?
谢谢!
答案 0 :(得分:0)
我以为我错过了一些概念性的东西,但这是一个简单的错误:
当我增加n1Links和n2Links时,我最终将n1和n2设置为null。
因此,当我尝试取n1或n2的大小时,它们将为空。